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

2015-04-28 17:29:04 +08:00
 RihcardLu

服务器为新浪云,本机为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?

3505 次点击
所在节点    PHP
6 条回复
cover
2015-04-28 17:36:14 +08:00
怀疑本机不能与服务直连。。 直接telnet下看端口通不通就好了吧
RihcardLu
2015-04-28 17:38:44 +08:00
@cover 用的是免费的空间,不提供服务器权限,仅能上传代码。
402645707
2015-04-28 17:46:47 +08:00
没事干开ss干嘛
RihcardLu
2015-04-28 17:48:25 +08:00
@402645707 翻墙查资料用的
nicksite
2015-04-28 17:54:58 +08:00
sae 的socket bind/listen方法无法使用。http://sae.sina.com.cn/doc/python/socket.html
RihcardLu
2015-04-28 18:03:41 +08:00
@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