
java socket通信 客户端之间怎样建立连接
展开全部
TCP通过服务端中转
UDP只接发至已知IP和端口就可以,P2P打洞过程,获得客户的IP和端口过程。
UDP只接发至已知IP和端口就可以,P2P打洞过程,获得客户的IP和端口过程。
追问
大哥 能给代码吗
追答
打洞流程:
假设client A要向client B对话,但是A不知道B的地址,即使知道根据NAT的原理这个对话在第一次会被拒绝,因为client B的NAT认为这是一个从没有过的外部发来的请求.这个时候,A如果发现自己没有保存B的地址,或者说发送给B的会话请求失败了,它会要求server端让B向A打一个洞,这个B->A的会话意义在于它使NAT B认为A的地址/端口是可以通过的地址/端口,这样A再向B发送对话的时候就不会再被NAT B拒绝了.打一个比方来说明打洞的过程,A想来B家做客,但是遭到了B的管家NAT B的拒绝,理由是:我从来没有听我家B提过你的名字,这时A找到了A,B都认识的朋友server,要求server给B报一个信,让B去跟管家说A是我的朋友,于是,B跟管家NAT B说,A是我认识的朋友,这样A的访问请求就不会再被管家NAT B所拒绝了.简而言之,UDP打洞就是一个通过server保存下来的地址使得彼此之间能够直接通信的过程,server只管帮助建立连接,在建立间接之后就不再介入了.
1、每个客户端首先得到自己的私有地址/终端,然后向server端发送登陆请求
2、server端在得到这个请求之后就可以知道这个client端的公有地址/终端,server会为每一个登陆的client保存它们的私有地址/端口和公有地址/端口
3、如果A想和B联系,则A向server请求,server收到请求后,向B发出指令要求B向A发一个打洞包(A的地址和端口由Server向B提供,所谓的打洞包就是向A发个任意内容的包,内容不重要,关键是这个包指向A的地址和端口,而且这个包不会到达A),至此洞已打好。
4、B发完后,通知server,server将B的地址和端口告诉A,A则可以根据这个地址和端口直接和B通讯了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询