CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  网络编程

如何实现通过服务器,让两个客户端互相通信!

楼主tjjccnu(tini)2005-01-05 14:44:31 在 VC/MFC / 网络编程 提问

我的意思是,两个客户端A和B都各自通过一个socket和服务器连接,要求是tcp而不是udp,   然后其中一个客户端A向服务器发出请求,通过服务器的处理,实现另一个客户端B对其做出响应,即间接实现两个客户端的互联,有点p2p的意思!  
   
  谢谢了,在线等,马上结贴 问题点数:80、回复次数:16Top

1 楼nastar(阿门)回复于 2005-01-05 14:55:36 得分 40

当2个客户端都要留有一个监听端口(客户程序中定义),当双方都连接服务器成功后,服务器将另一个IP发过来,客户端就利用这个IP向另一个客户端发出连接请求。不知道这么解释你明白没有。  
  换句话说,客户端也要同时留一个服务套口。Top

2 楼nastar(阿门)回复于 2005-01-05 14:56:21 得分 0

客户端登陆服务器是为了获得对方的IP地址Top

3 楼tjjccnu(tini)回复于 2005-01-05 14:58:20 得分 0

你说的我明白,但是我想做的是,我发送一个请求,能够通过服务器直接让另一个客户端响应,就是直接修改ip头。  
   
  当然你说的这种情况,如果要和n台机器通信,不是每个客户端都要保留n个socket!Top

4 楼HunterForPig(留着口水的猪)回复于 2005-01-05 15:05:58 得分 0

tcp   讨论过很多次了  
  每次都是无疾而终Top

5 楼tjjccnu(tini)回复于 2005-01-05 15:08:41 得分 0

呵呵,是啊,upd好象可以实现!  
  那p2p软件都是什么原理呢?怎样实现的啊?比如bt!Top

6 楼balloy()回复于 2005-01-05 16:55:04 得分 0

http://www.ppcn.net/show.aspx?id=1306&cid=2  
   
   
  不过我还是有疑问,如果防火墙只开了80端口,那么该怎么办呢?  
   
   
   
  另外,to   HunterForPig(留着口水的猪)   :  
  TCP为什么不行呢?Top

7 楼oyljerry(【勇敢的心】→ ㊣提拉米苏√㊣)回复于 2005-01-05 18:42:10 得分 0

TCP不是不行,而是比较难以实现Top

8 楼sharkhuang(走吧走吧!人总会慢慢长大~)回复于 2005-01-05 20:51:47 得分 0

其实就是做了个2进制的管道Top

9 楼kingzai(stevenzhu)回复于 2005-01-05 23:01:16 得分 40

http://dev.csdn.net/Develop/article/23/23869.shtm  
  3.5.   Simultaneous   TCP   open(TCP同时打开)  
  在一对节点都在已存在middlebox后,有一种建立直接P2P   TCP连接的方法有时候会被使用。大多数TCP连接都是从一个终端发从一个SYN包到另一个终端,另一个中断同步响应一个SYN-ACK包。无论怎样,对于两个终端来说,同时通过发送同步包到对方然后用一个ACK包应答来建立一个TCP连接是可行的。这种过程就被称为"simultaneous   open"(同时打开)  
   
  如果一个middlebox从尝试建立一个TCP连接的私有网络的外面接受一个TCP   SYN包,middlebox通常以丢弃这个SYN包或者发送一个TCP   RST(连接复位)包的方式来拒绝这个连接尝试。但是,如果同步包与源和目的地址端口一起到达,那么会让middlebox相信一个TCP连接已经建立起来,然后middlebox将会允许数据包通过。特别是如果middlebox刚刚得到并转换了一个从同样地址和端口来的SYN包,它将认为连接是成立的并允许进来的SYN通过。如果客户端A和B能彼此预测公共端口,它们各自的middlebox将分配下一个TCP连接端口,如果其中一个客户端和另一个客户端建立一个外部的TCP连接,可以在对方SYN到达本地middlebox之前就发送SYN包通过它本地自己的middlebox,那么P2P   TCP连接就可以工作了。  
   
  ...Top

10 楼balloy()回复于 2005-01-06 13:45:01 得分 0

多谢kingzai(stevenzhu)   提供的文章。  
   
  但是还是有问题,如果防火墙限定了某几个端口(假设只开了80、90),那么P2P程序该怎么办呢?Top

11 楼HunterForPig(留着口水的猪)回复于 2005-01-06 13:48:39 得分 0

如果防火墙限定了某几个端口(假设只开了80、90),那么P2P程序该怎么办呢?  
  那就用代理了Top

12 楼muroachanf(阿远之哈儿)回复于 2005-01-06 13:49:30 得分 0

路过Top

13 楼balloy()回复于 2005-01-06 17:26:49 得分 0

to   HunterForPig(留着口水的猪)   :  
  你说的用代理,是指用外网提供的代理了,对吗?  
  Top

14 楼HunterForPig(留着口水的猪)回复于 2005-01-06 19:21:52 得分 0

如果是两个内网client要通讯,那么代理当然要外网Top

15 楼balloy()回复于 2005-01-06 20:07:55 得分 0

多谢Top

16 楼tjjccnu(tini)回复于 2005-01-07 08:19:46 得分 0

问题没有解决,还是把分给了吧!  
  自己回去再研究研究!Top

相关问题

  • 数据库客户端与服务器端通信的过程
  • 简单问题:服务器端与客户端通信问题!
  • delphi客户端和java服务器端的通信问题
  • 客户端怎么和服务器端通信?
  • 关于客户端和服务器间的通信问题
  • 如何实现服务器与客户端通信
  • 有关服务器同时与几个客户端通信的问题
  • Web Services 的客户端和服务器能不能双向通信
  • 服务器跟客户端的通信问题,请高手指教!
  • 服务器与客户端使用TCP通信,服务器如何检测客户端异常退出,例如断电!

关键词

  • .net
  • p2p
  • 客户
  • 端口
  • 服务器
  • 连接
  • 防火墙
  • tcp
  • 终端
  • ip

得分解答快速导航

  • 帖主:tjjccnu
  • nastar
  • kingzai

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo