最近做的一个项目,需要用到php socket通信方面,现在我测试了 ,在TCP下可以成功从客户端发往服务端,服务端也可以返回到客户端信息。
但是在UDP下,程序就会出现问题,可以在客户端接收到信息,但是用socket_write()返回的话,会显示找不到返回的地址然后 客户端也接受不到服务端返回的信息!
在此 请求 懂这方面的帮忙解决下。PHP Warning: socket_write(): unable to write to socket [0]: 由于套接字没有连接
并且(当使用一个 sendto 调用发送数据报套接字时)没有提供地址,发送或接收数据的请求
没有被接受。 socket PHPUDPsocket_write()
但是在UDP下,程序就会出现问题,可以在客户端接收到信息,但是用socket_write()返回的话,会显示找不到返回的地址然后 客户端也接受不到服务端返回的信息!
在此 请求 懂这方面的帮忙解决下。PHP Warning: socket_write(): unable to write to socket [0]: 由于套接字没有连接
并且(当使用一个 sendto 调用发送数据报套接字时)没有提供地址,发送或接收数据的请求
没有被接受。 socket PHPUDPsocket_write()
解决方案 »
- 用过phpcms的朋友帮个忙
- php preg_replace 问题
- PHP中图片的ALT在哪儿?
- 要怎样读懂Ecshop程序呢?现在想把它的搜索功能换个位置,结果不知道怎么弄,求帮忙…
- webgame如何实现数据同步? (讨论帖)
- zendstudio写JS代码的时候好慢
- editplus可以代码跟踪吗?或者用什么轻巧的编辑器
- smarty报错yntax error: unrecognized tag
- 请教一个数组整理方法
- php利用ftp上传图片,图片上传成功,但把index.php文件换个目录,再运行index.php便提示上传失败,index.php文件内容如下!
- 有人有这个工具吗?
- 有zencart大手么
这里是服务端
<?php
set_time_limit( 0 );
ob_implicit_flush();
echo "创建SOCKT...\n";
$socket = socket_create( AF_INET, SOCK_DGRAM, SOL_UDP);
if ( $socket === false ) {
echo "socket_create() failed:reason:" . socket_strerror( socket_last_error($socket) ) . "\n";
}
echo "绑定SOCKT...\n";
$ok = socket_bind( $socket, '192.168.1.59', 8686);
if ( $ok === false ) {
echo "socket_bind() failed:reason:" . socket_strerror( socket_last_error( $socket ) );
}
else
{
echo "绑定SOCKT成功...\n";
}
$count = 0;
socket_set_block ($socket);
do {
$msg ="服务端发往客户端!!!\n";
socket_sendto($socket,$msg,strlen($msg),0,'192.168.1.59',1207);
echo "测试成功了\n";
$form="";
// $port=0;
socket_recvfrom($socket,$buf,1024,0,$form,$port);
echo "测试成功了啊\n";
$talkback = "收到的信息:$buf\n";
echo $buf1;
echo $talkback;
} while (true);
socket_close($socket);?>
这里是客户端<?php
$server_ip="192.168.1.59";
$port = 8686;echo "创建SOCKT...\n";$socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP) or die ("sockt create failed");
socket_bind( $socket, '192.168.1.59', 1207);
if(!socket_connect($socket, '192.168.1.59', $port)){
print("Couldn't connect: " .socket_strerror(socket_last_error()) . "\n");
}
socket_sendto($socket, $str, $arrayLen, 0, '192.168.1.59',8686);
echo "发送到服务器信息成功!\n";
echo "发送的内容为:<font color='red'>$str</font> <br>";
$form ="";
$port1=0;
socket_recvfrom($socket,$buf,1024,0,$form,$port1);
echo $form;
echo $port1;
echo "回传信息成功!".$buf;echo "<br/>";
echo "关闭SOCKET...\n";
socket_close($socket);
echo "关闭OK\n";
?>
帮忙看下吧
帮忙看下吧。
就是服务端可以接受到,客户端接收不到服务端回传的信息,或者是回传不过来。
而且我用的是socket_recvfrom 与socket_sendto 后面加地址的。 所以 这里可以不用加connect的,在客户端的connect 是我测试socket_write与socket_read的时候用的
客户端也没必要bind吧?