2012-04-23 5 views
0

나는 이걸로 충분히 싸웠습니다. 나는 TCP 클라이언트 코드를 작성하려고하는데이 코드는 서버에 데이터를 보내고 응답을 받아야합니다. 클라이언트 코드는 다음과 같습니다.TCP 연결에서 데이터를 한 방향으로 만 보냅니다.

<?php 
$str3 = "Test Data"; 
echo $str3; 
$fp = stream_socket_client("tcp://192.168.1.26:12000", $errno, $errstr, 30); 
if (!$fp) 
{ 
    echo "$errstr ($errno)<br />\n"; 
    echo "Some problem! </br>"; 
} 

else 
{ 
    fwrite($fp,$str3); 
    $str = ""; 

    while ($str == "") 
    { 
     $str = fgets($fp, 1024); 
    } 

    fclose($fp); 
    echo $str; 
} 
?> 

원격 호스트가 데이터를 수신하고 응답합니다. 불행히도 $ str에 데이터가 없습니다. 필자는 원격 호스트를 제어하지 않으며 데이터를 수신하고 응답을 생성했음을 알 수 있습니다. 정확히 어디서 잘못 될지 제안 해 주시겠습니까?

답변

2

더 많은 관용적 인 읽기 루프를 시도해 볼 수 있습니다. 내가 http://www.php.net/manual/en/function.fgets.php에서이 코드를 도난했습니다

while (($buffer = fgets($fp, 4096)) !== false) { 
    echo $buffer; 
} 
if (!feof($fp)) { 
    echo "Error: unexpected fgets() fail\n"; 
} 
fclose($fp); 
+0

이봐, 그것은 시간이 초과 동안에서 (($ 버퍼 =는 fgets (4096 $ FP를)) == 거짓!) – user1051505

관련 문제