java socket 两个客户端通信问题!
javasocket可以实现两个客户端进行通信吗?客户端建立链接时,可以有服务器(IP固定)进行辅助,链接建立完毕后不再通过服务器!谁有这方面的经验,有代码最好了!谢谢!...
java socket可以实现两个客户端进行通信吗?
客户端建立链接时,可以有服务器(IP固定)进行辅助,链接建立完毕后不再通过服务器!
谁有这方面的经验,有代码最好了!谢谢! 展开
客户端建立链接时,可以有服务器(IP固定)进行辅助,链接建立完毕后不再通过服务器!
谁有这方面的经验,有代码最好了!谢谢! 展开
3个回答
展开全部
java socket有两种方式。
一种是 UDP 这个可以直连,不需要服务器。
一种是TCP 这个是肯定要能过服务器来通信的。
所以你说的。链接建立完毕后不再通过服务器!
这个可以实现,但会麻烦一些。
1.先说一下简单的点的吧。
用TCP的方式。你所有的消息都是发给服务器。包含你的IP及通信端口,及对方的IP及通信端口信息。
当然这些是隐藏在数据报中的。这样由服务器来进行分发。
2.你说的那种方式有点类似TCP与UDP混合。
首先启动一个SERVER
然后每 一个客户端,先要登陆SERVER,并在server上记录下你的IP及通信端口信息,
如果你要连接某一个客户端。先要向服务器发出一个申请,获得到方的IP及端口信息,
然后进行UDP连接。连接上以后,就是直接发送息,
不需要服务器了。
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也就玩不转了。
展开全部
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。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询