当前位置:编程学习 > VC++ >>

VC内网和外网通信如何实现?

最近研究套接字,研究了很久,买了一本明日出版社的VC书,照样弄了个聊天室,发现只能内网自己玩,外网压根访问不到。。。。。 如果要更好的研究学习好套接字,应该从什么层面切入?
答案:套接字编程很庞大,内网和外网其实大致都差部多,只是外网需要做NAT穿通,你如果想搞外网聊天的话,UDP穿透是必须的。
学好套接字的话应该去了解TCP/IP协议栈的原理和设计,《TCP/IP详解》那三本书不错。看了后会对网络编程有个全面的认识。实际上编程实现功能是很容易,但是你要去深入了解。就比如你会问为什么外网聊天就行不通了,实际上是你不对计算机网络基本知识还了解太少。什么事NAT,为什么要用UDP,为什么要用TCP,什么时候用原始套接字?什么是协议链?如何修改协议链?如何SPI?什么又是VPN,IP隧道。其实网络编程很庞大,建议你先从基础学起,先了解常见的API用法,至少你要熟悉它每个参数和返回值的意义,同时多看原理知识,这样才能深入理解网络编程。
其他:这样的情况就像两个都是内网的机子进行通信。要想实现这种通信,楼主可以去你搜一下,好像要用nat什么的技术,路由器也得支持 和VC没关系 去补 NAT打洞、NAT穿透 网上搜一下 不怎么明白LZ的描述哈。
路由器1 2 对于与路由器3并行的内网来说,IP均为 192.168.0.1 这个好理解。

但是如何绑定别的机子的SOCKET我还是第一次听说哈,绑定貌似只能绑定本地的SOCKET和本地的端口。

楼主的意思是不是:用192.168.0.2这个IP给另外一个网段的192.168.0.2
发送数据?虽然描述得不是很清晰。毕竟,把电脑IP设置成路由器的IP,会造成一定问题,甚至很多都会提示IP冲突。

如果楼主是我说的那个意思,那么,很遗憾的告诉你,还真没办法直接发送数据。
这样的情况就像两个都是内网的机子进行通信。
要想实现这种通信,楼主可以去搜索下P2P技术。
大概意思是先让两台电脑联系上公共的主机。建立相应的路由路径...然后由主机指挥他们打洞,实现直接通信。

就像QQ一样,两台都是内网的机子(不同网段),不可能实现直接指定IP就能发送数据(这样的IP太多了,成千上万的192.168.0.*,且该网段属于保留网段,指定此IP只能用于同一网段(局域网)的机器进行通信)。
这样会造成数据发送到本网段的该IP机器上。这时,QQ服务器就出现了...
登录的时候就会传递一个路由路径...这个传递的地址会有一定的有效期,所以就需要定时或不定时(有效期内可自由设定)发送心跳包...用以表示还存活着。
然后服务器回应,表示收到数据。这时,如果好友之间进行聊天,就出现两种情况:1.数据完全由服务器进行转发。2.服务器让他们建立p2p连接直接通信....

希望楼主能理解。跨网段的内部机器是不能直接指定IP通信的。必须借助服务器转发或者用服务器实现p2p。
至于p2p,楼主可以去网上搜索下,文章很多,也有直接代码的。

希望采纳哇,累死我了。
 内网能访问,外网就能访问。是不是防火墙没关? 

上一个:UDF中VC++2008的环境变量如何设置,有贴吧说加三个环境变量,可是环境变量里面有用户变量和系统变量
下一个:VC6.0怎么知道工具栏按钮执行的是哪个函数

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,