传输端点未连接

时间:2011-05-27 06:36:19

标签: php sockets websocket

我的代码是这样但不起作用

<?php
    $sock = socket_create(AF_INET, SOCK_STREAM, 0);
    $sk = socket_connect($sock,"10.0.1.43","1234");
    socket_set_nonblock($sock);

    while (1) {        
        sleep(2);
        $buffer=socket_read($sock,512);
        echo "Buffer = $buffer \n";
        echo "Last Error = ".socket_last_error($sock).socket_strerror(socket_last_error($sock))."\n";        
    }        
?>

显示错误:

无法从套接字[107]读取:未连接传输端点 PHP堆栈跟踪: 缓冲区=
上次错误= 107Transport端点未连接

由于

3 个答案:

答案 0 :(得分:2)

您必须先接受连接!在while()循环内,执行另一个while(),如下所示:

while($client = socket_accept($sock)) {
    $buffer=socket_read($client, 512);
    echo "Buffer = $buffer \n";
}

它应该可以正常工作。

答案 1 :(得分:1)

好的,所以客户端套接字没有连接。

什么是协议'0'?你确定系统上的'0'是TCP吗? 不确定是否可以在connect()之后更改套接字块/非阻塞状态 - 从未尝试过这样的事情。 如果$ sk为false,那么最后一个错误是什么? 是否可以通过TCP访问10.0.1.43:1234的服务器?

RGDS, 马丁

答案 2 :(得分:0)

正如我在上一篇回答的评论中所写,你可以在PHP.net Examples Page找到解决这个问题的好例子。在主要文章中,您将找到一个很好的示例,如何使一个没有错误的监听器,您正在引用一个客户端,并在下面的javier通知中,如何为多客户端目的使用相同的。