如何用SOCKET编写与外网通信的程序???

thor_lee 2009-02-24 01:21:06
RT,现在已经用SOCKET实现了在内网(一个网段上)的两台不同主机的通信(不是在一台机器上用127.0.0.1)现在的问题是如何才能与外网通信呢?就像QQ一样,如何才能实现呢?
是不是要使用其他的通信方式呢?
有什么一般的处理过程吗?多谢各位了~~~~~
...全文
273 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
百事烟 2009-02-25
  • 打赏
  • 举报
回复
有一种简单的 适合连接不多的情况

内网 TCP Client to---- 公网 Server -------to CLient TCP 内网

公网 Server 只是简单的收包发包,写法不依赖于2个Client
thor_lee 2009-02-25
  • 打赏
  • 举报
回复
多谢各位大大!
那我是不是可以这样理解:

假设的情况是最简单的SOCKET通信程序,即client端只有server的IP和SOCKET端口号,而server只有端口号(<不要问我为什么会这样写,我是照书上写的,偶新手,表鄙视……⊙﹏⊙b汗>)

1.如果server在外网上且有固定IP地址,那么就可以直接在内网的client上与server通信;
2.但是反过来,由于server不知道client的网关和IP,所以不能给client发送信息;
3.如果要server也往client发送信息,那么必须在client连接server的时候附带上内网IP和网关信息等(不知道这种想法是否正确和可行??或者用其他什么方法能达到该目的??)这样外网上的server才能找到内网上的client,然后与之通信
4.如果server在另外一个内网上,则需要中间有服务器或者代理什么的来转发数据,就叫MidServer吧,然后这个MidServer和最初的client,server的关系又都分别是类似内网客户端和外网服务器的呢?

不知道小弟这样理解是否正确,还请各位不吝赐教啊~~~~

还有3楼和4楼提到的穿透技术又是怎么回事呢?能简单介绍下吗??再次感谢……o(╯□╰)o
百事烟 2009-02-24
  • 打赏
  • 举报
回复
内网可以直接外网发送连接请求,反之不能,需要穿透
vagrantisme 2009-02-24
  • 打赏
  • 举报
回复
你以用服务器来转发啊。很简单的。
另一种方案是用UDP透传。
路人乙2019 2009-02-24
  • 打赏
  • 举报
回复
这个涉及到P2P技术,你可以参考<windows网络与通信程式序设计>
jxb_memory 2009-02-24
  • 打赏
  • 举报
回复
一样,直接用就可以了。

18,356

社区成员

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

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