问题描述
服务器端用java线程写Socket备注:其他无关代码不发了,主要部分发下System.out.println("Socket["+this.server_id+"]connectionsuccess.");PrintWriterout=newPrintWriter(newBufferedWriter(newOutputStreamWriter(this.server_socket.getOutputStream())),true);out.println("Socket["+this.server_id+"]welcomeclient");BufferedReaderin=newBufferedReader(newInputStreamReader(this.server_socket.getInputStream()));Stringss;ss=in.readLine();out.println("test_outputs");下面是PHPWEB客户端代码:$fp=fsockopen("192.168.0.119",5000,$errno,$errstr,30);stream_set_timeout($fp,30);stream_set_blocking($fp,true);if(!$fp){die("error".$errstr."".$errno);}else{echo($tmp=fgets($fp))."<br>";$status=stream_get_meta_data($fp);//发送数据超时if($status['timed_out']){echo"read1timeout";fclose($fp);die();}echo"linksuccess!"."<br>";}fputs($fp,"order1");echo"fputsorder1";$tmp=fgets($fp);$status=stream_get_meta_data($fp);//发送数据超时if($status['timed_out']){echo"read2timeout";fclose($fp);die();}问题:客户端在读取服务器端发过来数据后又发送了数据过去,然后又读取服务器端发来的数据,为什么两个读取中间夹一个发送数据,第2个读取一直读不到,一直超时,无论等多少时间都超时。是不是有什么机制在?请高手回答
解决方案
解决方案二:
解决方案三:
PHP的不懂,飘过,友情帮顶
解决方案四:
谢谢!有谁知道吗
解决方案五:
我再简单说吧,我用JAVA做了个socket服务端,用PHP去链接它,问题出来了:每次只要从PHP端传到服务器端数据后,再读从服务器端发来的数据就读不了了。为什么也就是fputs()后再fgets()就读不了了,超时了。
解决方案六:
java的stream一般有缓存,最好是在每次write之后flush一下!
解决方案七:
没用的,还是一样