如何实现客户端与客户端之间的一对一通信?

wangyanyan007 2011-06-15 10:23:57
用c/s模型如何实现客户端与客户端之间的一对一通信?客户端与客户端之间实现的一对多的通信,是通过vector来实现的?那么一对一如何实现?
...全文
1039 21 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangyanyan007 2011-10-18
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 weeksun23 的回复:]
客户端之间知道相互的IP地址端口后 怎么通信??有具体代码吗?
[/Quote]
我还没有实现如何知道相互之间的端口,所以通信更没有实现了、、你的代码能不能发给我,让我看看啊。。谢谢。。。
weeksun23 2011-10-09
  • 打赏
  • 举报
回复
客户端之间知道相互的IP地址端口后 怎么通信??有具体代码吗?
wangyanyan007 2011-06-17
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 whiteclouds 的回复:]

引用 14 楼 wangyanyan007 的回复:

引用 12 楼 whiteclouds 的回复:

引用 9 楼 wangyanyan007 的回复:

另外就是在即时通信系统中如何进行客户端与客户端之间的文件传输,这时服务器再作为中转站,那服务器的负担就太重了。。怎么实现呢?

不知道你到底哪里不明白,你获得了客户端的IP,就可以直接建立客户端之间的socket连接了,……
[/Quote]
谢谢!另外一个客户端在知道请求客户端的ip之后,它们之间的通信是怎么实现的?之前我做的都是基于控制台的winsocket。。。
whiteclouds 2011-06-17
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 wangyanyan007 的回复:]

引用 12 楼 whiteclouds 的回复:

引用 9 楼 wangyanyan007 的回复:

另外就是在即时通信系统中如何进行客户端与客户端之间的文件传输,这时服务器再作为中转站,那服务器的负担就太重了。。怎么实现呢?

不知道你到底哪里不明白,你获得了客户端的IP,就可以直接建立客户端之间的socket连接了,然后传输文件或者其他数据都可以了。

能否给段代码,让我……
[/Quote]
手边没有现成的代码,而且这不是单独的客户端或服务器端就能实现的,我只能说一下我的思路,你在客户端与服务器端建立TCP连接之后,服务器端就可以获得客户端的ip,在另一个客户端也跟服务器端建立连接之后,服务器可以把第一个客户端的ip告诉第二个客户端,然后他们就可以互相通讯了。
蒙飞鸿 2011-06-17
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 wangyanyan007 的回复:]
引用 10 楼 mengfeihong 的回复:

TCP的话双方都有IP就可以直接通信了,UDP在一个网段内可以直接广播。
主要看你使用的通信协议以及网络环境。

我使用的是tcp/ip协议
[/Quote]
那样的话就看你的网络情况,如果两台客户端在一个局域网内,那么可以用局域网IP直接通信,如果需要通过公网,那么至少一个有公网IP然后让另一个通过这个IP与它直接通信。
否则都要服务器中转。
yanghehong 2011-06-17
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 wangyanyan007 的回复:]

另外就是在即时通信系统中如何进行客户端与客户端之间的文件传输,这时服务器再作为中转站,那服务器的负担就太重了。。怎么实现呢?
[/Quote]

文本聊天通过服务器中转就可以了。
语音聊天,视频聊天,文件传输就尽量客户端和客户端直接P2P通信..


- 千里孤行
wangyanyan007 2011-06-17
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 whiteclouds 的回复:]

引用 9 楼 wangyanyan007 的回复:

另外就是在即时通信系统中如何进行客户端与客户端之间的文件传输,这时服务器再作为中转站,那服务器的负担就太重了。。怎么实现呢?

不知道你到底哪里不明白,你获得了客户端的IP,就可以直接建立客户端之间的socket连接了,然后传输文件或者其他数据都可以了。
[/Quote]
能否给段代码,让我理解一下。。。之前,客户端与客户端之间的通信都是通过服务器中转的,没有实现真正的一对一通信。。。
wangyanyan007 2011-06-17
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 mengfeihong 的回复:]

TCP的话双方都有IP就可以直接通信了,UDP在一个网段内可以直接广播。
主要看你使用的通信协议以及网络环境。
[/Quote]
我使用的是tcp/ip协议
whiteclouds 2011-06-17
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 wangyanyan007 的回复:]

另外就是在即时通信系统中如何进行客户端与客户端之间的文件传输,这时服务器再作为中转站,那服务器的负担就太重了。。怎么实现呢?
[/Quote]
不知道你到底哪里不明白,你获得了客户端的IP,就可以直接建立客户端之间的socket连接了,然后传输文件或者其他数据都可以了。
wangyanyan007 2011-06-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 kevin_perkins 的回复:]

这就是所谓的P2P技术了.
服务器中转是客户端与服务器建立的连接,不是客户端之间的连接.
[/Quote]
对于p2p技术不了解。。还请推荐基本相关书籍。。
蒙飞鸿 2011-06-17
  • 打赏
  • 举报
回复
TCP的话双方都有IP就可以直接通信了,UDP在一个网段内可以直接广播。
主要看你使用的通信协议以及网络环境。
wangyanyan007 2011-06-17
  • 打赏
  • 举报
回复
另外就是在即时通信系统中如何进行客户端与客户端之间的文件传输,这时服务器再作为中转站,那服务器的负担就太重了。。怎么实现呢?
wangyanyan007 2011-06-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 shenyi0106 的回复:]

P2P??
还是服务器中转?
[/Quote]
p2p吧。如果是中转的话,服务器的负担太重了。。。
wangyanyan007 2011-06-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 visualeleven 的回复:]

创建一个SOCKET,然后进行收发数据就可以了
[/Quote]
创建socket实现了服务器与客户端的通信,客户端与客户端之间怎么区通信呢?还是存在疑惑?
whiteclouds 2011-06-17
  • 打赏
  • 举报
回复
socket通讯是一个跨平台的标准协议,无论控制台还是windows都是一样的用法。
xgPaul 2011-06-16
  • 打赏
  • 举报
回复
获取各个客户端的信息,使用UDP即可以实现。。。
vcf_reader 2011-06-16
  • 打赏
  • 举报
回复
王艳燕?
shenyi0106 2011-06-15
  • 打赏
  • 举报
回复
P2P??
还是服务器中转?
whiteclouds 2011-06-15
  • 打赏
  • 举报
回复
easy,服务器记录客户端A的IP,然后告诉客户端B,B就能直接跟A连接通讯了。
Eleven 2011-06-15
  • 打赏
  • 举报
回复
创建一个SOCKET,然后进行收发数据就可以了
加载更多回复(1)

18,363

社区成员

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

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