Home > Backend Development > PHP Tutorial > PHP+SOCKET 由于套接字没有连接并且没有提供地址,发送或接收数据的请求没有被接受

PHP+SOCKET 由于套接字没有连接并且没有提供地址,发送或接收数据的请求没有被接受

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Release: 2016-06-13 12:55:02
Original
1352 people have browsed it

求助:PHP+SOCKET 由于套接字没有连接并且没有提供地址,发送或接收数据的请求没有被接受。

本帖最后由 subendong 于 2011-06-03 16:39:41 编辑 由于之前连续发布了两篇帖子,无一有回,所以先向版主申请删除之前两篇类似的帖子,不然留着无用。就像垃圾一样。
然后希望大神,能根据我提供的代码,稍作修改,使得代码能够正确运行,谢谢!

具体如下:
Warning: socket_read(): unable to read from socket [0]: 由于套接字没有连接并且(当使用一个 sendto 调用发送数据报套接字时)没有提供地址,发送或接收数据的请求没有被接受。
我建了两个文件xx.php是在服务器端执行的文件。x.php是在客户端执行的文件。
xx.php
<?php <br />
// 设置一些基本的变量 <br />
global $lat,$lnt;<br />
$host = "192.168.1.110"; <br />
$port = 8080; <br />
// 设置超时时间 <br />
set_time_limit(0); <br />
// 创建一个Socket <br />
$commonProtocol = getprotobyname("tcp");<br />
$socket = socket_create(AF_INET, SOCK_STREAM, $commonProtocol);<br />
<br />
//绑定Socket到端口 <br />
$result = socket_bind($socket, $host, $port) or die("Could not bind to socket\n"); <br />
$ret = socket_listen($socket, 5);<br />
if($ret)<br />
{<br />
    while (true)<br />
    {<br />
        $spawn = socket_accept($socket);<br />
        if(!$spawn) break;<br />
        $output = "congratulations,you have connected server:" . $host . "!";<br />
        socket_write($spawn, $output, strlen ($output)) or die("error\n"); <br />
        $input = socket_read($socket, 100000);<br />
        socket_write($spawn, $input, strlen ($input)) or die("error\n"); <br />
        socket_close($spawn);<br />
    }<br />
}<br />
socket_close();<br />
?><br />
Copy after login




x.php
<?php <br />
// 设置一些基本的变量 <br />
$host = "192.168.1.110"; <br />
$port = 8080; <br />
// 设置超时时间 <br />
set_time_limit(0); <br />
// 创建一个Socket <br />
$commonProtocol = getprotobyname("tcp");<br />
$socket = socket_create(AF_INET, SOCK_STREAM, $commonProtocol);<br />
if(!$socket) echo "can't creat socket";<br />
//绑定Socket到端口 <br />
<br />
$result = socket_connect($socket,$host,$port);<br />
if($result)<br />
{<br />
    $output="abc";<br />
    socket_write($socket, $output, strlen ($output));<br />
    $input = socket_read($socket, 1024);<br />
}<br />
echo $input;<br />
?>
Copy after login



在服务器先打开xx.php,然后再在客户端打开x.php,结果服务器端提示以上错误信息,就是socket_read的错误。
哪位大神帮我看下,找了好多资料都没解决。

------解决方案--------------------
我给你个可用的测试例
// Client <br>
// 设置错误处理<br>
error_reporting (E_ALL);<br>
// 设置处理时间<br>
set_time_limit (0);<br>
<br>
$ip = "";       // IP 地址<br>
$port = 1000;            // 端口号<br>
<br>
$socket = socket_create (AF_INET, SOCK_STREAM, SOL_TCP);   // 创建一个SOCKET<br>
if ($socket)<br>
    echo "socket_create() 成功!<br>\n";<br>
else<br>
    echo "socket_create() 失败:".socket_strerror ($socket)."<br>\n";<br>
<br>
$conn = socket_connect ($socket, $ip, $port);       // 建立SOCKET的连接 <div class="clear">
                 
              
              
        
            </div>
Copy after login
Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template