如何用MFC实现两个客户端之间的点对点通信?(不借助服务器)

网络中的两个客户端的IP地址往往不是主机显示的那4个双字节的IP地址,而是一个更长的数字(除非这两个都是服务器),那么,茫茫网海,如何在不借助服务器的前提下实现这两台机器点对点通信呢?高手请指教。
我这样做的目的是想减少通过服务器端的信息流量,你看QQ的文件传输就是点对点不经过服务器,如果经过的话,信息量绝对受不了。
另外我会MFC的服务器-客户端聊天室编程,所有信息都通过服务器中转的。

我不明白LZ的这句话->不是主机显示的那4个双字节的IP地址,而是一个更长的数字
IP地址是4个双字节的IP地址 如果该客户机是位于一个局域网里 那么就会有2IP地址 内网IP 外网IP 网络中的客户IP当然是使用外网IP 整么会不是呢?

实现P2P的方法

把服务器简单称为S 客户端为C
第一种情况 当C1与C2同时都位于外网的时候 那么C1可以直接向C2发送信息 C2也可以直接向C1发送信息
第二种情况 当C1位于外网 而C2 是在一个局域网里的时候 C2可以直接向C1发信息 C1能收到 而C1向C2发送信息到达LAN的时候那么 传送信息包里的端口就会被改变 C2就无法接受到该信息 如果要让C2能接受到信息 那么C2就要先发送一个信息给C1 这个时候C2就打上了一个洞 能让C1 的指定端口发送信息到C2 这样C2就能接受到该信息
第三种情况 也是最难的 C1与C2 分别位于不同的局域网了 那么就需要C1与C2先向服务器发送信息打洞 然后各自向对方的洞里发送一个信息 然后就可以实现P2P了

以上就是所谓的打洞技术
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-03-03
IP地址格式是固定的,怎么会是一个更长的数字?

除非是IPv6
第2个回答  2008-03-03
用TCP协议实现服务器与客户端的有连接通信
相似回答