2011-04-27 35 views
1

我有JAVA中的服务器和客户端应用程序,与此服务器有什么关系。首先看,这是没有问题的 - JAVA使用socket.getInputStream()来接收数据,使用socket.getOutputStream()来发送数据。套接字PHP挂在fgets上

我需要在PHP上编写相同的客户端。手册中的所有示例都不能帮助我。我可以成功连接到服务器,但是当我试图读取某些内容时 - 页面挂起。例如:

$fp = stream_socket_client($addr, $errno, $errstr, 30); 
if (!$fp) { 
    echo "$errstr ($errno)<br />\n"; 
} else { 
    fwrite($fp, $data); 
    while (!feof($fp)) { 
     var_dump(fgets($fp, 1024)); 
    } 
    fclose($fp); 
} 

该代码即使没有时也会挂起。

什么可能是错的?

回答

0

你的服务器真的发送字节吗?

fgets($fp, 1024) 

回报,如果这些条件之一发生:

- EOF或换行符接收

- 1024-1字节读

远侧闭合连接

如果这些情况没有发生,通话会阻止。

如何将1024更改为较低的数字或使用fgetc()?