用WSA写的程序,经过测试,校内的电脑能和我的电脑建立连接,但校外的不行,查了一个晚上发现可能是校园网的防火墙拒绝了连接请求,怎么解决?
顺带问,QQ、微信这些也是有用到Socket的吗?怎么他们的连接就能通过校园网的防火墙
补充:connect()失败后 ,WSAGetlasterror() 返回值是10060
(账号里只有这几个C币..)
用WSA写的程序,经过测试,校内的电脑能和我的电脑建立连接,但校外的不行,查了一个晚上发现可能是校园网的防火墙拒绝了连接请求,怎么解决?
顺带问,QQ、微信这些也是有用到Socket的吗?怎么他们的连接就能通过校园网的防火墙
补充:connect()失败后 ,WSAGetlasterror() 返回值是10060
(账号里只有这几个C币..)
问题已解决。
socket中,如果服务器设在局域网中,只有同局域网的客户端能发起connect(..);如果服务器设在公网,则什么内外网的客户端都能connect这个服务器。
所以要让外网客户端connect内网服务器,一个办法是 将内网的IP和一个端口号做一个外网的映射,这样就相当于服务器设在公网IP上了,客户端程序的代码中connect的服务器IP和port设为映射后的服务器IP和port(即公网上的Ip,port)。
实现内网映射的工具是【花生壳】,一个动态域名解析软件。