最近做的一个项目,需要用到php socket通信方面,现在我测试了 ,在tcp下可以成功从客户端发往服务端,服务端也可以返回到客户端信息。
但是在udp下,程序就会出现问题,可以在客户端接收到信息,但是用socket_write()返回的话,会显示找不到返回的地址。。。然后 客户端也接受不到服务端返回的信息!
在此 请求 懂这方面的帮忙解决下。
php warning: socket_write(): unable to write to socket [0]: 由于套接字没有连接
并且(当使用一个 sendto 调用发送数据报套接字时)没有提供地址,发送或接收数据的请求
没有被接受。
回复讨论(解决方案) .......没有 做过这方面的么?
是理解不到,你上面的出错信息说的很明白了,就是没有连接或者地址不正确
给个代码看看吧,靠猜没有用
这里是服务端
这里是客户端
帮忙看下吧
// $port=0; 这里的注释也要去掉。。 一直做各种测试呢 。 没弄好
帮忙看下吧。
就是服务端可以接受到,客户端接收不到服务端回传的信息,或者是回传不过来。
服务器端为何没有listen和accept?
connect也没有……很晕
因为是udp的 不是tcp的啊。。。
connect 是在客户端加的啊。。。
而且我用的是socket_recvfrom 与socket_sendto 后面加地址的。 所以 这里可以不用加connect的,在客户端的connect 是我测试socket_write与socket_read的时候用的
呃,udp。。。
我再看看
客户端应该是连接哪里就从哪里recv的,没理由要分开端口
客户端也没必要bind吧?
嗯 没必要绑定。。 我这不是没有办法了么, 然后各种测试么。 客户端bind以前是没绑定的,在这里没有效果的。
我删除了bind ,也一样出现这样的效果!
别使用udp了。tcp是标准的被推荐的方式。udp在很多软件中都不被支持。
curl可能支持udp
这里有个足够简单的udp例子了
http://www.zrwm.com/?p=1281
我也不想用udp了 ,tcp的测试成功了,但是项目要求必须要用udp的 !
非常感谢snmr_com 从你发给我的链接上 的代码 ,修改了下,成功了!
