java socket 两个客户端通信问题!

javasocket可以实现两个客户端进行通信吗?客户端建立链接时,可以有服务器(IP固定)进行辅助,链接建立完毕后不再通过服务器!谁有这方面的经验,有代码最好了!谢谢!... java socket可以实现两个客户端进行通信吗?
客户端建立链接时,可以有服务器(IP固定)进行辅助,链接建立完毕后不再通过服务器!

谁有这方面的经验,有代码最好了!谢谢!
展开
 我来答
百度网友845f74e61
2012-10-08 · TA获得超过6929个赞
知道大有可为答主
回答量:4050
采纳率:50%
帮助的人:1629万
展开全部
java socket有两种方式。
一种是 UDP 这个可以直连,不需要服务器。
一种是TCP 这个是肯定要能过服务器来通信的。

所以你说的。链接建立完毕后不再通过服务器!
这个可以实现,但会麻烦一些。

1.先说一下简单的点的吧。
用TCP的方式。你所有的消息都是发给服务器。包含你的IP及通信端口,及对方的IP及通信端口信息。
当然这些是隐藏在数据报中的。这样由服务器来进行分发。

2.你说的那种方式有点类似TCP与UDP混合。
首先启动一个SERVER
然后每 一个客户端,先要登陆SERVER,并在server上记录下你的IP及通信端口信息,
如果你要连接某一个客户端。先要向服务器发出一个申请,获得到方的IP及端口信息,
然后进行UDP连接。连接上以后,就是直接发送息,
不需要服务器了。

java socket的东西,以前做过一些,所以有思路,但没有现成的代码。

有问题再联系。
追问
server 中可以记录A,B客户端的ip和通讯端口,但是如果A客户端有路由器的话,B客户端可以穿过路由器连接上A客户端吗?我主要问题就纠结在这里!
追答
这个肯定是可以的。
要不然怎么可能有那么多的公网IP。
学校的局域网还不能用了?

关于你的问题,我没有实际的做过测试。所以不能肯定的回复你。

我的想法是这样的
你应该不用管理,这一部分。
如果你是能过路由上网,那么你的IP肯定是局域网IP,但如果你用网上的IP查询,会得到一个公网IP。
所以,我想你与服务器连接上以后,它得到的可能也不是你的局域网IP。

这应该就是TCP/IP相关的书中提到的套接字什么的吧。

我的理解是这样的,你以你的局域网IP向路由发送请求,路由向服务器发送请求,在这个套接字中
应该包含了两层IP。
所以服务器得到消息,会使用这个套接字,向你的路由回消息。路由解析后,知道发送给局域网中具体的机器。

如果这个都实现不了,那么腾讯的QQ也就玩不转了。
yeiccie
2012-10-08
知道答主
回答量:26
采纳率:0%
帮助的人:6.5万
展开全部
client_A 向服务器server发起请求,server提供client_B的地址返回给client_A,client_A再向client_B发起请求,只能是这样。client与client的通信是不可以的。
追问
我也这么认为,所以我说有服务器进行辅助,但是两个客户端都没有固定ip,并且在不同的局域网内,这时怎么根据ip去链接呢?谢谢您!
追答
连接server的时候把自身的IP扔给server就可以了,只是你知道了IP还要能识别IP所对应的client才可以,也就是同时要再扔过去一个client的标识,这样就可以了。

也就是说client_B在连接server的时候,把自己的IP和一个自身的标识放在server上,当client_A要找B的时候必需要知道client_B的唯一标识才可以在server上找到client_B的IP,然后再脱离server并连接client_B。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
liuql353945001
2012-10-08
知道答主
回答量:17
采纳率:0%
帮助的人:2.6万
展开全部
不知道
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式