套接字 - 接收/发送消息 (php)

Posted

技术标签:

【中文标题】套接字 - 接收/发送消息 (php)【英文标题】:Sockets - Receiving/sending message (php) 【发布时间】:2014-06-04 08:38:38 【问题描述】:

我正在尝试学习如何使用套接字。 但是,在接收(或发送)消息时我遇到了问题。

这是我用来发送消息的代码:

    <?php
    $sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
    $msg = "Ping !";
    $len = strlen($msg);

    socket_sendto($sock, $msg, $len, 0, '127.0.0.1', "3306");
    echo "Message sent!<br />";
    socket_close($sock);
?>

我用来接收消息并显示它们的代码:

    <?php
    $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
    $adresse = "127.0.0.1";
    $port = "3306"; 

    echo("Connection... <br>");
    $result = socket_connect($socket, $adresse, $port) or die("impossible to connect! <br>");

    echo("Result: ".$result."<br>");

    while($out = socket_read($socket, 2048))
        echo $out;
    socket_close($socket);
    echo("<br />Socket closed!<br>"); 
?>

这就是我收到的:

Connection...

Result: 1 N 5.6.12-log,HfIyF3hÿ÷€6r_aM;~-``sImysql_native_passwordSocket closed!

我不明白为什么会这样。 谢谢你的帮助! ;)

【问题讨论】:

在启动代码之前尝试检查端口 3306 的可用性(例如使用 nmap) 【参考方案1】:

如果您的主机中的 3306 端口已经启动了 MySQL 服务器,请尝试停止它并重试。

【讨论】:

感谢您的回答。我已经尝试停止我的 Wamp 并重试它,但它是一样的。奇怪的是,即使我没有启动页面来发送消息,我仍然会收到一条消息。 :// 你在开始你的代码之前检查了端口 3306 吗? 我用 netstat 命令 (netstat -a) 检查了我正在监听的端口,结果发现端口 3306 处于“监听”状态。不知道够不够? 就是这样!您必须在测试之前停止使用此端口的进程。您可以使用 netstat -ao 找到它的 PID,这将在结果中添加一个 PID 列。 感谢您的解释。我检查了一下,发现 PID 对应于 wampmysqld(我正在使用 wamp 进行测试:/)。

以上是关于套接字 - 接收/发送消息 (php)的主要内容,如果未能解决你的问题,请参考以下文章

简单的UDP套接字代码,发送和接收消息

Python Socket - 同时发送/接收消息

使用套接字在eclipse android程序中通过IP地址发送消息

将消息发送到套接字端口并使用Spring Integration接收响应

XMPP 客户端接收服务器消息

PHP 简单的网络套接字