套接字 - 接收/发送消息 (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)的主要内容,如果未能解决你的问题,请参考以下文章
使用套接字在eclipse android程序中通过IP地址发送消息