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

tjjccnu 2005-01-05 02:44:31
我的意思是,两个客户端A和B都各自通过一个socket和服务器连接,要求是tcp而不是udp, 然后其中一个客户端A向服务器发出请求,通过服务器的处理,实现另一个客户端B对其做出响应,即间接实现两个客户端的互联,有点p2p的意思!

谢谢了,在线等,马上结贴
...全文
848 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
tjjccnu 2005-01-07
  • 打赏
  • 举报
回复
问题没有解决,还是把分给了吧!
自己回去再研究研究!
balloy 2005-01-06
  • 打赏
  • 举报
回复
多谢
HunterForPig 2005-01-06
  • 打赏
  • 举报
回复
如果是两个内网client要通讯,那么代理当然要外网
balloy 2005-01-06
  • 打赏
  • 举报
回复
to HunterForPig(留着口水的猪) :
你说的用代理,是指用外网提供的代理了,对吗?
muroachanf 2005-01-06
  • 打赏
  • 举报
回复
路过
HunterForPig 2005-01-06
  • 打赏
  • 举报
回复
如果防火墙限定了某几个端口(假设只开了80、90),那么P2P程序该怎么办呢?
那就用代理了
balloy 2005-01-06
  • 打赏
  • 举报
回复
多谢kingzai(stevenzhu) 提供的文章。

但是还是有问题,如果防火墙限定了某几个端口(假设只开了80、90),那么P2P程序该怎么办呢?
kingzai 2005-01-05
  • 打赏
  • 举报
回复
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连接就可以工作了。

...
sharkhuang 2005-01-05
  • 打赏
  • 举报
回复
其实就是做了个2进制的管道
oyljerry 2005-01-05
  • 打赏
  • 举报
回复
TCP不是不行,而是比较难以实现
balloy 2005-01-05
  • 打赏
  • 举报
回复
http://www.ppcn.net/show.aspx?id=1306&cid=2


不过我还是有疑问,如果防火墙只开了80端口,那么该怎么办呢?



另外,to HunterForPig(留着口水的猪) :
TCP为什么不行呢?
tjjccnu 2005-01-05
  • 打赏
  • 举报
回复
呵呵,是啊,upd好象可以实现!
那p2p软件都是什么原理呢?怎样实现的啊?比如bt!
HunterForPig 2005-01-05
  • 打赏
  • 举报
回复
tcp 讨论过很多次了
每次都是无疾而终
tjjccnu 2005-01-05
  • 打赏
  • 举报
回复
你说的我明白,但是我想做的是,我发送一个请求,能够通过服务器直接让另一个客户端响应,就是直接修改ip头。

当然你说的这种情况,如果要和n台机器通信,不是每个客户端都要保留n个socket!
nastar 2005-01-05
  • 打赏
  • 举报
回复
客户端登陆服务器是为了获得对方的IP地址
nastar 2005-01-05
  • 打赏
  • 举报
回复
当2个客户端都要留有一个监听端口(客户程序中定义),当双方都连接服务器成功后,服务器将另一个IP发过来,客户端就利用这个IP向另一个客户端发出连接请求。不知道这么解释你明白没有。
换句话说,客户端也要同时留一个服务套口。

18,356

社区成员

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

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