socket外网通讯,怎么实现????

dzz10 2012-10-24 06:15:52
最近做斗地主,当客户端和服务器在局域网内一点为题都没有,但怎么对望通讯呢???

假设我把服务器放在我寝室的电脑上,然后在其它学校的哥们电脑上运行一个客户端,想实现的就是xx学校的哥们能连接上我的服务器。

这个能实现么?具体怎么实现呢?

vc++ socket
...全文
1305 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
Frank范 2014-07-19
  • 打赏
  • 举报
回复
请问楼主现在实现了吗?我现在类似的想通过socket实现两台手机之间的通信,实验室手机和家庭手机通信,家庭手机通过路由器上网,路由器公网IP是117.125.1.243,我现在在路由器的虚拟服务器做设置:服务端口5000内部端口4000 手机IP地址192.168.1.104,我在实验室手机的代码里做socket请求的时候是这样写吗?clientsocket = new Socket(117.125.1.243, 5000);然后在服务端要监听的端口号是4000吗?,是这样做吗。为什么实现不了呢
Joseph-Growth 2012-10-26
  • 打赏
  • 举报
回复
花生壳功能很强大,但确实是用不上。
Joseph-Growth 2012-10-26
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 的回复:]

1.外网服务器转发:再写个程序当作转发服务器,放在外网,你设计的斗地主服务器和客户端都连接到这个转发服务器,都向这个转发服务器通信,就可以达到斗地主服务器与客户端间接通信;

2.路由器端口映射:你哥们的客户端连接你学校外网IP和一个端口号,在把这个端口映射到你本机,那么通过你学校外网IP和这个端口的消息都转发给你的机器。这个不知道行不行,也没有实验过,当初我也有楼主的想法,困惑了我很长时间……
[/Quote]
这个就是我说的,被BeanJoy表述的很明白,第二个方法我测试过,完全ok。
BeanJoy 2012-10-26
  • 打赏
  • 举报
回复
再想种变通的方案:
申请个空间,建个网站或FTP(这个网站或FTP当然是所有网络都可以访问,包括内网),你的服务器和客户端访问这个网站或FTP,要么通过网站你的服务器与客户端间接通信,要么直接访问FTP,把服务器与客户端要通信的内容写成文件放在FTP上,一个上传,一个下载。
谨提供方案,速度这些可行不可行不考虑。
不过话说回来,都建网站了,何不再此基础上做游戏,利用AJAX什么。
再说两句,当初我也有楼主的想法,但一直没实现,希望借楼主的帖到找到好的解决方案。
BeanJoy 2012-10-26
  • 打赏
  • 举报
回复
说花生壳的,有没有了解过花生壳的用途?
花生壳的最大用处是每次登录花生壳客户端时,服务器会自动把你当前的IP和域名绑定,所以别人只要使用域名就可以得到你的IP,而不管你IP怎么变,只要每次变后登录花生壳更新一下你的IP即可。
楼主的情况与这个完全不一样,楼主的服务器与客户端都是内网,相信用学校的网,楼主机器与他哥们机器的IP都是不变的,根本用不着花生壳,而且就算楼主机器IP要变,变的也是内网IP,楼主学校外网IP不会变,楼主哥们连接的还是楼主学校外网IP。内网情况下端口映射才是解决之道。
allenjiao 2012-10-25
  • 打赏
  • 举报
回复
如果你的服务器在公网上有公网地址,socket是TCP的话,通信就没问题;
UDP需要NAT穿越
luawkk 2012-10-25
  • 打赏
  • 举报
回复
1,花生壳
2,固定IP
3,公网服务器
fujialin2011 2012-10-25
  • 打赏
  • 举报
回复
把服务器挂在公网上,客户端所在的网络比较复杂,必须保证他能穿过各种NAT,包括代理服务、防火墙等来与服务器连接,对于客户端之间的通讯就要借助服务器,可以先打洞,如果打洞不能互联,那就通过服务器中转。
ShengFei01 2012-10-25
  • 打赏
  • 举报
回复
通常内网通过NAT连接到外网,外网的机器无法连接进来,必须有一台在外网,而且最好服务器在外网。
傻X 2012-10-25
  • 打赏
  • 举报
回复
花生壳。肯定可以的。
zhouzhipen 2012-10-25
  • 打赏
  • 举报
回复
在公网上运行一个你的服务器就行了。
BeanJoy 2012-10-25
  • 打赏
  • 举报
回复
1.外网服务器转发:再写个程序当作转发服务器,放在外网,你设计的斗地主服务器和客户端都连接到这个转发服务器,都向这个转发服务器通信,就可以达到斗地主服务器与客户端间接通信;

2.路由器端口映射:你哥们的客户端连接你学校外网IP和一个端口号,在把这个端口映射到你本机,那么通过你学校外网IP和这个端口的消息都转发给你的机器。这个不知道行不行,也没有实验过,当初我也有楼主的想法,困惑了我很长时间,也没有好的解决方案,学校网络环境复杂,我也不太懂网络,学校也不允许随便动,也没有实现。
酒红色的泪 2012-10-25
  • 打赏
  • 举报
回复
可以用花生壳的免费域名试试
Joseph-Growth 2012-10-25
  • 打赏
  • 举报
回复
两个局域网通信,需要一个外网服务器,通过NAT穿透。
如果一个在公网,一个在局域网,那就把局域网的外部路由服务器设置一个开放端口。外网就跟这个公网端口通信,内网也是向这个端口发射。有路由配置端口映射。
dzz10 2012-10-24
  • 打赏
  • 举报
回复
如果不能实现的话,我可以把我的程序放到外网IP的机器上运行。
dzz10 2012-10-24
  • 打赏
  • 举报
回复
嗯,我的在x学校局域网,他的在y学校局域网
Eleven 2012-10-24
  • 打赏
  • 举报
回复
都在局域网内?
dzz10 2012-10-24
  • 打赏
  • 举报
回复
坐等高手回答
dzz10 2012-10-24
  • 打赏
  • 举报
回复
不能就这么沉了啊
dzz10 2012-10-24
  • 打赏
  • 举报
回复
沙发自拿

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧