socket 程序本地调通, server 部分放到服务器上本地 client 无法实现连接

2017-03-23 20:54:07 +08:00
 cnta

//serv_addr.sin_addr.s_addr=inet_addr("127.0.0.1"); serv_addr.sin_addr.s_addr=inet_addr("118.89.xxx.xxx"); serv_addr.sin_port=htons(1235); connect(sock,(struct sockaddr*)&serv_addr,sizeof(serv_addr));

为什么设为 127.0.0.1 在本地能够成功运行,但是改为服务器 ip 地址后,将 server 部分程序放在(腾讯云)服务器上面运行 client 一直连接不上呢?服务器能够 ping 通,安全组设置为全部开放,然后防火墙也是关闭的,系统为 ubuntu server ,本地试了虚拟机 ubuntu 内、和 Windows Subsystem for Linux 都行, client 运行在虚拟机 ubuntu 和 Windows Subsystem for Linux 均无法连接上服务器,为什么呢?

3263 次点击
所在节点    Linux
4 条回复
cnta
2017-03-23 21:05:46 +08:00
wevsty
2017-03-23 21:29:03 +08:00
有些云外网 IP 是在外网网关上的,所以 Server 直接 Bind 外网 IP 是不行的。
Bind 0.0.0.0 应该就可以了。
akira
2017-03-23 21:33:27 +08:00
telnet 服务器对应端口是否能链接
cnta
2017-03-23 21:45:01 +08:00
@wevsty 谢谢,通过你的回答解决了我的问题~

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

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

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

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

© 2021 V2EX