php 通过 socket 和新浪云服务器通信失败

2015 年 4 月 28 日
 kechx

服务器为新浪云,本机为Windows,开启ss代理。

$service_port = getservbyname('http', 'tcp');
$address = gethostbyname('server address');

if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === false) {
    echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n";
}
if (socket_bind($sock, $address, $service_port) === false) {
    echo "socket_bind() failed: reason: " . socket_strerror(socket_last_error($sock)) . "\n";
}
if (socket_listen($sock) === false) {
    echo "socket_listen() failed: reason: " . socket_strerror(socket_last_error($sock)) . "\n";
}

执行报错:

Warning: socket_bind(): unable to bind address [10049]: The requested address is not valid in its context.
Warning: socket_listen(): unable to listen on socket [10022]: An invalid argument was supplied.

怀疑是本机不能与服务器进行直连
stackoverflow参考

请问v友们是如何解决这些问题的?端口转发?
还有服务器与客户端有没有更简单和方便的通信方式?Http?

4347 次点击
所在节点    PHP
6 条回复
cover
2015 年 4 月 28 日
怀疑本机不能与服务直连。。 直接telnet下看端口通不通就好了吧
kechx
2015 年 4 月 28 日
@cover 用的是免费的空间,不提供服务器权限,仅能上传代码。
402645707
2015 年 4 月 28 日
没事干开ss干嘛
kechx
2015 年 4 月 28 日
@402645707 翻墙查资料用的
nicksite
2015 年 4 月 28 日
sae 的socket bind/listen方法无法使用。http://sae.sina.com.cn/doc/python/socket.html
kechx
2015 年 4 月 28 日
@nicksite thanks, 原来是sae不支持。那么只有用http方式进行数据传输了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/187035

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX