国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

創(chuàng)建socket客戶端連接,收不到服務(wù)端消息,請老大指點。。。

dreamboycx

在虛擬機192.168.1.199中使用gatewayworker時創(chuàng)建TCP服務(wù),如下圖:

圖片

我在本地寫的client.php寫一個socket來連接虛擬機上的gatewayworker:

    error_reporting(E_ALL);
    set_time_limit(0);

    $port = 80;
    $ip = "192.168.1.199";

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

 $result = socket_connect($socket, $ip, $port);
 if ($result < 0) {
     echo "socket_connect() failed.\nReason: ($result) " . socket_strerror($result) . "\n";
 }

 $in = "Tiger";
 $out = '';

 if(!socket_write($socket, $in, strlen($in))) {
     echo "socket_write() failed: reason: " . socket_strerror($socket) . "\n";
 }else {
     echo "發(fā)送到服務(wù)器信息成功!\n";
 }

while($out = socket_read($socket, 1024,PHP_NORMAL_READ)) {
     echo "接收服務(wù)器回傳信息成功!\n";
     echo "接受的內(nèi)容為:",$out;
 }
 echo "關(guān)閉SOCKET...\n";
 socket_close($socket);

在虛擬機上的gatewayworker只寫了簡單的回復(fù)信息:

 public static function onMessage($client_id, $message)
   {
        if($message=='T'){
            Gateway::sendToClient($client_id,"TTTTTTTTTTTTTTT");
        }else{
            Gateway::sendToClient($client_id,"$client_id said $message");
        }

   }

可是本地執(zhí)行client.php時,沒有反應(yīng),甚至是瀏覽器卡死,在命令行的cmd下也不行,問題好像出在while循環(huán)上,while換成if就能成功,不知道while循環(huán)好像變成了死循環(huán),socket_read已經(jīng)寫了只讀1024個字節(jié)啊,讀完了不是應(yīng)該跳出循環(huán)嗎?請老大指點。。。

13989 6 0
6個回答

walkor 打賞

你的客戶端socket是阻塞的,socket_read會一直阻塞等待數(shù)據(jù),直到超時返回空,在超時之前所會一直卡死。

  • 暫無評論
dreamboycx

是的,阻塞了,但是服務(wù)端返回數(shù)據(jù)了啊,為什么還一直是等待數(shù)據(jù)直到超時呢?
另外,我在生產(chǎn)服務(wù)器開啟了以下服務(wù),socket能連接,但無認(rèn)怎樣也無法接收和發(fā)送數(shù)據(jù),服務(wù)端連觸發(fā)都不觸發(fā),服務(wù)如下圖

[attach]308[/attach]

我就是想簡單實現(xiàn)客戶端的socket服務(wù)連接workerman服務(wù)器,實現(xiàn)socket通訊。。。。

  • 暫無評論
walkor 打賞

因為你代碼while循環(huán)一直讀數(shù)據(jù),客戶端讀到數(shù)據(jù)后還要再讀,這時服務(wù)端已經(jīng)沒有數(shù)據(jù)可讀了,就一直卡著了。

另外你的workerman版本太老了,建議用新的版本。

  • 暫無評論
dreamboycx

哦,那個明白了,呆會我加上\r\n試試,應(yīng)該就能中斷了,另外老版本還能運行,所以也沒有再換新版本,老版本應(yīng)該也能socket數(shù)據(jù)寫入和接收吧?為什么我能夠連接上,但卻無法發(fā)送和接收數(shù)據(jù)呢?

  • 暫無評論
walkor 打賞

應(yīng)該是你客戶端寫的有問題,可以抓包看下是否有收到數(shù)據(jù)接收數(shù)據(jù),抓包方法看workerman手冊吧。
另外服務(wù)端是否收到數(shù)據(jù)可以調(diào)試打印看下,如何調(diào)試打印也看看workerman手冊。

  • dreamboycx 2016-05-25

    我打印了,生產(chǎn)環(huán)境服務(wù)端沒有接收到數(shù)據(jù),所以客戶端也沒有收到返回的數(shù)據(jù),一直循環(huán),服務(wù)端沒有收到數(shù)據(jù)的原因想不通,以上代碼client.php就是客戶端的代碼,我已經(jīng)寫了socket_write,收不到數(shù)據(jù)不會老的workerman有什么bug不讓接收吧?

  • walkor 2016-05-25

    看下防火墻吧

  • dreamboycx 2016-05-25

    @1:防火墻沒有運行,很奇怪,我用各種TCP軟件連接,都可以正常連接,但就是發(fā)送不了數(shù)據(jù)。。。。

  • walkor 2016-05-25

    請抓包

  • dreamboycx 2016-05-26

    @1:抓包結(jié)果如下:192.168.1.187是本機客戶端,192.168.1.199是虛擬機gatewayworker服務(wù)端,抓包時,服務(wù)端調(diào)試沒有反應(yīng)。
    看不太懂,請老大明示。。。。

    10:51:43.091911 IP 192.168.1.187.65524 > 192.168.1.199.http: Flags [S], seq 3821433153, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
    E..4LF@.@.i............P..qA...... .t...............
    10:51:43.091933 IP 192.168.1.199.http > 192.168.1.187.65524: Flags [S.], seq 2117329769, ack 3821433154, win 14600, options [mss 1460,nop,nop,sackOK,nop,wscale 6], length 0
    E..4..@.@............P..~3.i..qB..9..;..............
    10:51:43.092455 IP 192.168.1.187.65524 > 192.168.1.199.http: Flags [.], ack 1, win 16425, length 0
    E..(LG@.@.i............P..qB~3.jP.@)3.........
    10:51:43.092473 IP 192.168.1.187.65524 > 192.168.1.199.http: Flags [P.], seq 1:6, ack 1, win 16425, length 5
    E..-LH@.@.i............P..qB~3.jP.@)....Tiger.
    10:51:43.092478 IP 192.168.1.199.http > 192.168.1.187.65524: Flags [.], ack 6, win 229, length 0
    E..(`.@.@.U..........P..~3.j..qGP...s+..
    10:51:49.432155 IP 192.168.1.187.65528 > 192.168.1.199.http: Flags [S], seq 3728501284, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
    E..4LM@.@.i............P.<j$...... .................
    10:51:49.432307 IP 192.168.1.199.http > 192.168.1.187.65528: Flags [S.], seq 1221440554, ack 3728501285, win 14600, options [mss 1460,nop,nop,sackOK,nop,wscale 6], length 0
    E..4..@.@............P..H...<j%..9.k...............
    10:51:49.433823 IP 192.168.1.187.65528 > 192.168.1.199.http: Flags [.], ack 1, win 16425, length 0
    E..(LN@.@.i............P.<j%H..+P.@).4........
    10:51:49.433855 IP 192.168.1.187.65528 > 192.168.1.199.http: Flags [P.], seq 1:6, ack 1, win 16425, length 5
    E..-LO@.@.i............P.<j%H..+P.@)wX..Tiger.
    10:51:49.433866 IP 192.168.1.199.http > 192.168.1.187.65528: Flags [.], ack 6, win 229, length 0
    E..((f@.@............P..H..+.<j
    P....s..

liulaoliu

你好我也遇到了同樣的問題,請問是如何解決的,萬分感謝!

  • 暫無評論
年代過于久遠(yuǎn),無法發(fā)表回答
??