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

php中文网
发布: 2016-06-13 12:55:02
原创
1509人浏览过

求助: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 />
登录后复制




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 />
?>
登录后复制



在服务器先打开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>
登录后复制
相关标签:
php
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号