socket通信 php作为客户端,C++作为服务端通信问题。。。
最近想做一个如题这样的东西,现在php发送能成功,C++做出正确的相应:发送一段json字符串,但是C++发出的消息php怎么也收不到。。。不知道这是为什么。。请大家帮帮忙 难道是C++传给php的消息格式有什么问题?重点问题我感觉出在socket_read上。。但是没搞明白
<?php<br>error_reporting(E_ALL);<br>set_time_limit(0);<br>echo "<h2>TCP/IP Connection</h2>\n";<br><br>$port = 6000;<br>$ip = "127.0.0.1";<br><br><br>$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);<br>if ($socket < 0) {<br> echo "socket_create() failed: reason: " . socket_strerror($socket) . "\n";<br>}else {<br> echo "OK.\n";<br>}<br><br>echo "试图连接 '$ip' 端口 '$port'...\n";<br>$result = socket_connect($socket, $ip, $port);<br>if ($result < 0) {<br> echo "socket_connect() failed.\nReason: ($result) " . socket_strerror($result) . "\n";<br>}else {<br> echo "连接OK\n";<br>}<br><br>$in = 'r';<br>$out ='';<br><br> if(!socket_write($socket,$in,strlen($in))) {<br> echo "socket_write() failed: reason: " . socket_strerror($socket) . "\n";<br> }else {<br> <br> echo "发送到服务器信息成功!\n";<br> echo "发送的内容为:<font color='red'>$in</font> <br>";<br> <br> }<br><br><br>while($out = socket_read($socket,8192)) {<br> //echo "接收服务器回传信息成功!\n";<br> //$obj=json_decode($out); <br> //echo "接受的内容为:",$out;<br> echo $out;<br> //echo $obj->0;<br>}<br><br><br>/*<br>if (false !== ($bytes = socket_recv($socket, $buf, 2048, MSG_WAITALL))) {<br> echo 'aa'.$buf.'aa';<br> echo "Read $bytes bytes from socket_recv(). Closing socket...";<br>} else {<br> echo "socket_recv() failed; reason: " . socket_strerror(socket_last_error($socket)) . " ";<br>}<br>*/<br>echo "关闭SOCKET...\n";<br>socket_close($socket);<br>echo "关闭OK\n";<br>?>------解决思路----------------------
那不就是 如果一直没有收到终止符
那不就是 如果一直没有收到终止符 \0、\r、\n 则永远停在等待输入 的情况了
这说明服务端没有发送结束符(也就是没有遵守约定)
你也只能连接 socket_read($socket,1) 的结果了
其实读一块和读一个字节的效率是一样的(都是从输入缓冲区读的)
这说明服务端没有发送结束符(也就是没有遵守约定)
你也只能连接 socket_read($socket,1) 的结果了
其实读一块和读一个字节的效率是一样的(都是从输入缓冲区读的)
行盟APP是结合了通信和互联网的优势,加之云计算所拥有的强大信息资源,借助广大的终端传递服务,潜在的拥有巨大商机。她到底是什么,又有什么作用?她是一款手机应用软件;她是一款专门为企业服务的手机应用软件;她是一款能够将企业各种信息放入其中并进行推广传播的手机应用软件!只要轻轻一点,企业的简介,产品信息以及其他优势就能最快最大限度的透过手机展现在客户的眼前,一部手机,一个APP,你面对的将是一个6亿&










