socket通訊 php作為用戶端,C++作為服務端通訊有關問題。

來源:互聯網
上載者:User
socket通訊 php作為用戶端,C++作為服務端通訊問題。。。
最近想做一個如題這樣的東西,現在php發送能成功,C++做出正確的相應:發送一段json字串,但是C++發出的訊息php怎麼也收不到。。。不知道這是為什麼。。請大家幫幫忙 難道是C++傳給php的訊息格式有什麼問題?重點問題我感覺出在socket_read上。。但是沒搞明白
error_reporting(E_ALL);
set_time_limit(0);
echo "

TCP/IP Connection

\n";

$port = 6000;
$ip = "127.0.0.1";


$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket < 0) {
echo "socket_create() failed: reason: " . socket_strerror($socket) . "\n";
}else {
echo "OK.\n";
}

echo "試圖串連 '$ip' 連接埠 '$port'...\n";
$result = socket_connect($socket, $ip, $port);
if ($result < 0) {
echo "socket_connect() failed.\nReason: ($result) " . socket_strerror($result) . "\n";
}else {
echo "串連OK\n";
}

$in = 'r';
$out ='';

if(!socket_write($socket,$in,strlen($in))) {
echo "socket_write() failed: reason: " . socket_strerror($socket) . "\n";
}else {

echo "發送到伺服器資訊成功!\n";
echo "發送的內容為:$in
";

}


while($out = socket_read($socket,8192)) {
//echo "接收伺服器回傳資訊成功!\n";
//$obj=json_decode($out);
//echo "接受的內容為:",$out;
echo $out;
//echo $obj->0;
}


/*
if (false !== ($bytes = socket_recv($socket, $buf, 2048, MSG_WAITALL))) {
echo 'aa'.$buf.'aa';
echo "Read $bytes bytes from socket_recv(). Closing socket...";
} else {
echo "socket_recv() failed; reason: " . socket_strerror(socket_last_error($socket)) . " ";
}
*/
echo "關閉SOCKET...\n";
socket_close($socket);
echo "關閉OK\n";
?>

------解決思路----------------------
那不就是 如果一直沒有收到終止符 \0、\r、\n 則永遠停在等待輸入 的情況了
這說明服務端沒有發送結束符(也就是沒有遵守約定)
你也只能串連 socket_read($socket,1) 的結果了
其實讀一塊和讀一個位元組的效率是一樣的(都是從輸入緩衝區讀的)
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.