C++-TCP协议开发的游戏连接外网进行对战失败
我用VC++,MFC编了一个中国象棋游戏,进行网络对战,采用的是TCP协议,局域网内连接成功,但是连接到外网时就失败了,我也百度了一下,可是网上根本就有没有具体的解决方案,请高手支招
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我用VC++,MFC编了一个中国象棋游戏,进行网络对战,采用的是TCP协议,局域网内连接成功,但是连接到外网时就失败了,我也百度了一下,可是网上根本就有没有具体的解决方案,请高手支招
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
如果你和你朋友的电脑都是在内网之后的,比如说都是用adsl拨号上网的,或者用通过路由器连接互联网的,那么你们输入对方外网ip是不能直接连接的。
解决方案一般是两种:
1.如果使用tcp的话,通过公网服务器转发,你们都连接到公网服务器上,通过公网服务器转发tcp报文。
2.就是通过点对点通信,好像qq聊天一样,利用udp打洞,实现两台内网计算机的直接通信。但是打洞要看路由类型的,不是100%能打通。所以一般是两种方案一起,如果打不通的话就自动使用第一种方案。
建议去网上找找p2p相关的电子书看看
1.代码中服务器IP没有设置正确。
2.代码中使用的通信端口被路由器屏蔽了。
1.如果你们两个都是通过路由器来NAT上网的话,有一种最直接的方法能让你们联通就是,把路由器去掉,直接两台机器拨号上网就可以了。
2.用花生壳。
3.如果你的通信方式是有固定的服务端口的话,可以将端口映射到路由器公网的一个端口上。
说到底还是你不懂网络,这不是谁给你个代码就能解决的,你还是先了解了解NAT这些东西了,在来谈解决方法吧,不然连这些都不懂给你说了其实也是白搭。