Shuo_Lin 2017-05-03 03:06 采纳率: 100%
浏览 1548
已采纳

如何解决 win socket 「外网客户端」向「校园网内的服务器」connect 失败的问题?

用WSA写的程序,经过测试,校内的电脑能和我的电脑建立连接,但校外的不行,查了一个晚上发现可能是校园网的防火墙拒绝了连接请求,怎么解决?
顺带问,QQ、微信这些也是有用到Socket的吗?怎么他们的连接就能通过校园网的防火墙

补充:connect()失败后 ,WSAGetlasterror() 返回值是10060
(账号里只有这几个C币..)

  • 写回答

1条回答 默认 最新

  • Shuo_Lin 2017-05-03 10:13
    关注

    问题已解决。
    socket中,如果服务器设在局域网中,只有同局域网的客户端能发起connect(..);如果服务器设在公网,则什么内外网的客户端都能connect这个服务器。
    所以要让外网客户端connect内网服务器,一个办法是 将内网的IP和一个端口号做一个外网的映射,这样就相当于服务器设在公网IP上了,客户端程序的代码中connect的服务器IP和port设为映射后的服务器IP和port(即公网上的Ip,port)。
    实现内网映射的工具是【花生壳】,一个动态域名解析软件。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 想问一下stata17中这段代码哪里有问题呀
  • ¥15 flink cdc无法实时同步mysql数据
  • ¥100 有人会搭建GPT-J-6B框架吗?有偿
  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决