JAVA实现UDP打洞问题 [问题点数:30分,结帖人aduxiaozi]

Bbs1
本版专家分:0
结帖率 71.43%
Bbs2
本版专家分:401
Bbs2
本版专家分:106
Bbs3
本版专家分:736
Bbs9
本版专家分:55812
C#实现UDP打洞
C#开发的同学,值得一看,你会有所收货的
C#实现udp打洞
使用C#<em>实现</em>udp<em>打洞</em>穿透nat udp<em>打洞</em>源码服务端和客户端C# <em>实现</em>
java udp打洞代码实例
基于java udp<em>打洞</em>代码可以直接运行,对刚刚接触这方面的同志,会有一定帮助。
UDP打洞实现代码
论坛上经常有对P2P原理的讨论,但是讨论归讨论,很少有实质的东西产生(源代码)。呵呵,在这里我就用自己<em>实现</em>的一个源代码来说明<em>UDP</em>穿越NAT的原理。
UDP打洞(成功打洞
个人博客:www.saoguang.top​​​​​​​ <em>UDP</em><em>打洞</em>   本篇文章由zg51747708曾广 原创,未经允许不可以转载 注:本文章内的程序代码全部是在Window 10 CreaterUpdata  VS2017 上测试 &amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp
udp打洞
我编了两个程序,一个是SERVER,运行在公网上,作为<em>UDP</em>包协调服务器,用以记录各客户端的上线状况;另一个就是CLIENT,可以运行在公网上,也可以运行在内网中.rnrn如果一个客户在公网,另一个客户在内网,可以<em>实现</em><em>UDP</em><em>打洞</em>,穿透NAT. 但如何两台机器均在内网(即在NAT之后),则无法<em>打洞</em>.因为,客户端出NAT时的端口发生了变化.rnrn不知道有没有高手成功,求指点。
UDP打洞问题
用<em>UDP</em><em>打洞</em>,目前可以<em>实现</em>公公、公NAT后点对点的相互通讯,目前存在以下<em>问题</em>:rn1、同一局域网内的机子无法<em>实现</em>相互通讯,该如何解决?难道直接用各自的内网地址进行访问?端口该如何设置?rn2、客户端彼此都在NAT后,又该如何<em>打洞</em>呢?
P2P UDP 打洞问题...
我现在出现的<em>问题</em>是:我的服务器在客户端登陆时,可以给客户端发已经登陆的客户列表信息,客户端也有一个每一秒的心跳时钟,但是,我的客户a向服务器请求客户b<em>打洞</em>时,服务器收到信息,并给客户b发送信息,发送没有错误,但客户b收不到.我自己又做一个按钮用来对选中的客户端发送信息,发现发送没有错误,但是,客户端没有一个能收得到的.请问这是什么<em>问题</em>啊?rnrn<em>问题</em>:服务器发送信息到客户端不成功.
关于UDP打洞问题
下面代码,是做个假设:rnrn我在NAT后边,本地先开本地3333端口。rn连接服务器123.123.123.123的1111端口,NAT到的端口号是4444,假设服务器给我返回对方客户端ip 234.234.234.234和端口3333。rn我再去连接对方。rn到这里,按理说我本地已经向234.234.234.234:3333<em>打洞</em>。rn可我在123.123.123.123和234.234.234.234监控时发现,我给234.234.234.234发出去的<em>UDP</em>,用的却是5555端口。rnrn也就是说,我这里给2个不同IP发<em>UDP</em>包,用的是不同的端口。这样234.234.234.234根本不知道我哪个端口对它是打开的。rnrn是我哪里弄错了?望高手指教。谢谢!rnrnrn[code=C#]rnprivate static UdpClient uc;rnuc = new UdpClient(3333);rnIPEndPoint iep = new IPEndPoint(IPAddress.Parse("123.123.123.123"), 1111);rnbyte[] bytes = Encoding.ASCII.GetBytes("conn");rnuc.Send(bytes, bytes.Length, iep);rnrnIPEndPoint iep2 = new IPEndPoint(IPAddress.Parse("234.234.234.234"), 3333);rnbyte[] bytes2 = Encoding.ASCII.GetBytes("conn");rnuc.Send(bytes2, bytes2.Length, iep2);rn[/code]
关于udp打洞问题
我的客户端可以通过发一个包给服务端(服务端是固定公网IP),然后服务端在另一个线程新建一个socket发回应信息,这样可以成功完成<em>打洞</em>,但是如果新建的socket绑定在不同的端口上,客户端就无法收到回应信息,举个例子:rnclient serverrn192.168.255.1:5010 222.126.199.154:5010rn |rn218.3.223.10:5010 --- 222.126.199.154:5010rnrn218.3.223.10:5010 <----- 222.126.199.154:5010rn就可以收到rn请问这是怎么回事,如何解决rnrn就这么多分了,全给完了,请大家多多帮忙rn
UDP 打洞问题
Server 和 Client A 同一台机器!rnClient B 一台机器,在同一局域网, 都没有安装防火墙之类的软件,用网上的例子,是可以打通的!。rnrn现在的思路是 rn1) Client A 用 <em>UDP</em> connect to Server, Server 发送 client A 接收 自己的 IP 和 Port;rn2) Client 用 TCP (之前TCP连接已经建立) 发自己的 IP 和 Port , 和目标 Client B 发给server;rn3) server TCP 发送 Client A 的IP 和PORT 给 Client B ;rn4) Client B 启用 <em>UDP</em> connect to server; (有数据包通信的) rn5)Client B 用 <em>UDP</em> 给 client A 发送数据包.( 此地址是 Server 传过来的IP 和PORT) // 这里。,用 iris 监视rn可以看到数据包,并且IP 和 port 都是正确!但 client A 无法收到 client B 的数据包rnrn请问现在我的<em>问题</em>出在哪里?rn 是<em>打洞</em>的步骤出了<em>问题</em>!rn还是程序的其他<em>问题</em>? rn
UDP打洞
NULL 博文链接:https://chimer.iteye.com/blog/1998467
UDP打洞问题?
现有一台电脑A在公网,另一台电脑B在局域网。rnA向B发送消息接收成功。rnB向A发送消息(发向测出的A的公网IP和端口号)接收不到。rnrn我看一些资料上<em>打洞</em>就是"公网A 向局域网B 发个消息,B再向A发送消息就成功了",但是我没通信成功,怎么回事?是我理解有误吗?rn请高手指点迷津。。。
UDP打洞遇到的问题
最近,本人试着编写一个简易的聊天小程序,为的是测试<em>UDP</em>穿透NAT这一技术,取得了一定的成功.但还有一些技术<em>问题</em>无法解决.rnrn我编了两个程序,一个是SERVER,运行在公网上,作为<em>UDP</em>包协调服务器,用以记录各客户端的上线状况;另一个就是CLIENT,可以运行在公网上,也可以运行在内网中.rnrn如果一个客户在公网,另一个客户在内网,可以<em>实现</em><em>UDP</em><em>打洞</em>,穿透NAT. 但如何两台机器均在内网(即在NAT之后),则无法<em>打洞</em>.因为,客户端出NAT时的端口发生了变化.rnrn不知有没有人成功过?
关于UDP打洞问题
只有NAT确信内部想与外部通信,NAT才会让外部的数据包进入内部。那么NAT是靠什么“确信内部想与外部通信”,就是内部发送一个数据包到这个“外部地址” rn rn 比如下面的网络环境: rn Client A ->Nat A->....internet <-Client B rn rn 比如Client A想发送给Client B一个信息“Hello”。那么直接给Client B的公网地址发送信息,会被NAT B丢掉,那么怎么让NAT B不丢掉这个信息呢?就是告诉NAT B“Client B确实想与Client A通信”,如果告诉NAT B?简单,让Client B发送一个“信息”到Client A的公网地址就好(这个信息就是“<em>打洞</em>”包) rn rn 过程: rn 1 Client A告诉Server : 我想与Client B通信 rn 2 Server通知Client B :Client A想与你通信 rn 3 Client B发送一个“<em>打洞</em>包”到Client A的公网地址(这个<em>打洞</em>包不需要携带任何有效信息) rn 4 Client A发送“Hello”到Client B,由于第三步的原因,NAT不会拒绝这个请求,通信成功。 rnrn我的<em>问题</em>在第三步,ClientA想给B发包,被丢弃,同理为何B给A发不被丢弃?rnrn我研究P2P有段时间了,一直搞不懂这个<em>问题</em>,望高手指点,谢谢
socket UDP打洞问题
分不多,麻烦各位了,情况是这样的,rnA客户端:192.168.8.100:5000 内网rnNAT:202.100.100.100:7000 对应的外网Seesion,rnB服务器:292.88.88.88:8000 外网服务器rn现在A客户端发送信息后,B服务器收到信息,B读到的发送IP是202.100.100.100:7000,rn然后B往202.100.100.100:7000这个IP发送信息,内网的A客户端监听的端口是5000,怎么收不到信息?
udp 打洞问题
基本原来已经理解但是有些地方不明白rnrn 内对内的环境,虽然两边的内网和服务器连接成功,并且发送了自己的NAT的IP和端口。以后两个内网连接,被连接方的NAT怎么肯能把连接发起方的连接传给指定内网?不会使用连接服务器的端口把?rnrn 现在网上的代码大部分时候内对内都连接不上去。但是现在这些P2P软件没有这个<em>问题</em>啊?rnrn P2P有没有开源的代码学习一下。(只需要内连接内的地方)rn
udp打洞技术在java怎么实现???
udp<em>打洞</em>技术 在java怎么<em>实现</em>? rnrn有没有代码 或者别的参考代码加资料? 谢谢rnrn大家。。。
java实现udp打洞,服务器转发消息
这篇文章主要面向新手来学习何为udp<em>打洞</em>,并且通过服务器端转发消息。这里更多是通过代码的理解,而不是原理上。事实上,原理性的文章在网上也已经有很多,随便百度一搜就是一大把,而且实质上简单易于上手的代码并不多。所以我总结了一些我对于udp的简单的理解。如有不到位的地方,请指出。 <em>打洞</em>(hole punching),字面上意思很简单明了,老鼠会<em>打洞</em>,打了洞就能够随心所欲在原来封闭的地方跑来跑去。而我
java 实现内网穿透,udp 打洞,NATjavaUdpP2P.rar
java <em>实现</em>内网穿透,udp <em>打洞</em>,NAT 穿透原理 1,客户端A登陆的时候,发送一个<em>UDP</em>数据包给服务器,然后服务器根据该包获得客户端A的IP和端口并保存到UdpAddressMap(用登录名作为key保存)中。 2,客户端A执行操作的时候,发送一个消息,带上目标客户端B的登陆名。 3,服务器端获得消息后,将客户端B的端口发送给客户端B,然后B使用该端口建立<em>UDP</em>监听。 4,客户端B再发送一条信息给服务器,告诉它监听已经建立,服务器将B的IP和PORT发送给客户端A。 5,客户端A获得信息后根据获得的客户端B的IP和PORT,绕过服务器,直接往客户端B发送数据。
NAT打洞(udp打洞和tcp打洞
记录udp和tcp<em>打洞</em>过程中的重要技术点。
delphi的indy实现udp打洞
利用udp协议<em>打洞</em><em>实现</em>p2p,delphi下<em>实现</em>p2p,类似于QQ的整个过程 .利用delphi的indy<em>实现</em>此过程
java udp 打洞例子(p2p)
java udp <em>打洞</em>例子(p2p) .
udp打洞,c++实现,Nat
#pragma once #include // 定义iMessageType的值 #define LOGIN 1 #define LOGOUT 2 #define P2PTRANS 3 #define GETALLUSER 4 // 服务器端口 #define SERVER_PORT 6060 // Client登录时向服务器发送的消息 struct stLoginMessage {
通过qq实现udp打洞
最近在看udp<em>打洞</em>的知识,有一个想法。一般我们udp<em>打洞</em>的时候需要一台server,还要有公网ip。像我们这些学生党,这些条件不能满足。 在我们使用qq进行了一次通话之后,双方的nat服务器应该都会对这次通信需要的转换信息记录的转换表当中,这是我们就可以用我们需要的通信来代替这次qq对话了。各位大神,这样能行得通吗
UDP打洞穿透NAT的问题?
A,B都是在NAT后,A和B都登录到服务器,服务器记录下它们的外网IP.rnA获取到B在服务器的外网IP,发送信息给B,同时发送给服务器,让服务器告诉B,叫B往A的外网IP<em>打洞</em>,这时A为什么收不到B向它<em>打洞</em>的消息?
UDP 指定端口打洞问题
首选,我要做一个CS协助<em>打洞</em>服务器,帮每个终端用户创建的自定义游戏服务器,能被互联网用户连接上此服务器,CS服务器默认端口为27015,CS客户端口:27005。现在我想通过UPD<em>打洞</em>的方式,给27015和27005端口,虽然现在完成了,但有一些路由器穿透不过,我搞了,快一星期了,还是没有搞定,那位大哥,有什么新的<em>UDP</em><em>打洞</em>技术,请出来指点一下,谢谢!
UDP穿越NAT,UDP打洞
用C# <em>实现</em> <em>UDP</em> 穿越NAT <em>UDP</em><em>打洞</em> 有全部源码和原理阐述
关于UDP打洞问题,奇怪
想使用<em>UDP</em><em>打洞</em>的程序测试是否成功,服务器端在运行在有公网地址的Linux系统下,在两个不同的局域网中的机子上分别运行了一个客户端进行测试,结果发现我这边的客户端能够接收另一个客户端的消息,但是发送给对方的时候失败,对方收不到消息,注意不是程序出错,因为这个通信过程可以继续,一直就是可以收到消息,但是对方收不到我的消息。还有就是双方的网络状况,我这边的网络就是一个简单的局域网,网络上没防火墙。对方由于系统对安全性要求非常高,有防火墙。不知道<em>问题</em>出现在什么方面?谢谢大家给予帮助
UDP打洞问题~ 百分求助!!
rn网上找的<em>UDP</em>通讯的测试程序 分 客户端 和服务端rnrn我在1个有独立IP的 机器上开启服务端rnrn一个 也是独立IP的机器上 开了个客户端rn我自己的 内网的机器上 也开了个客户端rn然后通过向服务端发送<em>UDP</em>包 获取各自 对外通讯的 IP和端口,rnrn按照 网上说的 <em>UDP</em><em>打洞</em>理论 ,rn我就可以 用这两个客户端 互相 往对方的 IP端口 发送信息了 rn但是我怎么发都收不到!!
想问个UDP打洞问题
装有网络调试助手的 两台手机和电脑rnrn电脑公网IP 219.134.15.219 打开<em>UDP</em>端口 52302rnrn手机1 117.136.12.180:4468 连接电脑成功并保持20s心跳连接rn手机2 117.136.12.176:4075 连接电脑成功并保持20s心跳连接rnrn我想让 手机1 连接 手机2rnrn手机1 向 117.136.12.176:4075 多次发送失败rn手机2 向 117.136.12.180:4468 多次发送失败rnrn手机之间通信,互相发送一次不是就<em>打洞</em>成功了么.为什么多次发送都不通啊.
UDP穿透NAT打洞问题
<em>打洞</em>理论是这么说的:如果client A 想要向client B发送一个消息,那么不能直接发送,否则会被NAT拦截。必须通知服务器给client B 发送一个通知,通知client B 向client A的方向<em>打洞</em>,那么以后client A就可以直接跟client B联系了。rnrn网上找到的一个解释:rn 1. Client A向Server发一个<em>UDP</em>包,Server收到后,将发送方的IP地址和<em>UDP</em>端口(NAT A向rnrnServer发送<em>UDP</em>包的端口,而不是Client A的4000端口)通知Client B。之后Client B就需要开始rnrn向这个IP地址和<em>UDP</em>端口发送<em>UDP</em>包了。当然,在下面第2步还未完成之前,Client B向这个IP地址和rnrn<em>UDP</em>端口发送的所有<em>UDP</em>包都会被NAT A丢弃。 rn rn 2. Client A向NAT B的地址和任意端口发一个包, 发送这个包没有其他目的,只是为了让NAT rnrn A认为从NAT B发送来的<em>UDP</em>包是安全的而已。rnrnrnrn我有一个疑问:就是为什么client A直接向client B发送消息会被NAT拦截,但是clinet B向cilent A发送的<em>打洞</em>消息就不会被client A 的NAT拦截呢???rnrn下面是我的想法:rn难道是这个client B 给client A 的<em>打洞</em>消息也会被client A 的NAT拦截,但是它的目的已经达到了,就是即使被拦截了,也已经打出了一个洞,从此以后,client A 给client B的消息可以直接发送了。rn但是我自己仔细想想不太可能,因为client B给client A 发送的<em>打洞</em>消息被拦截,那么就没有到达client A的这台内网主机,也就不可能在client A的NAT中有这个端口映射,没有端口映射,通过NAT后的clinet A直接发送给clinet B的消息就会加上一个client B 所不知道的外网IP+端口号,对于这个client B的NAT 肯定会拦截。rnrn难道NAT只认IP,不认端口;如果clinet B给client A 的外网IP发过<em>打洞</em>消息(即使这个消息被拦截),那么以后通过这个client A的外网发给 client A的消息都不会被拦截;rnrn但是,我在一个帖子上面看到,NAT是认IP+端口的,那个人换了一个socket ,因为不同socket绑定的不同的服务器端口,所以他用 socket A接收 client 的请求,用socket B去回复client 的时候,client 不能收到消息,也就是说socket B发出的消息不能达到位于NAT后面的client。而如果他用socket A 接收,用socket A回复的话,可以穿过NAT到达client 主机。rn这个说明,NAT是认IP,又认端口的。rnrnrnrn另外,我自己按照1,2所说的写了自己的代码,但是我是server.client A ,client B,三者同时运行在自己的一台机器上面,我的机器是个内网主机,按照上面的说明,我的client A与clinetB 没法通讯。。。。。rnrn知道内网主机不能做server,因为client不能连接到server,但是我的是可以连接上的(貌似是通过模拟的吧,我的server IP地址就是用的内网IP 192.168.0.X),还有就是知道 有些NAT不支持 “内网环回”(貌似这个说法),就是2个clinet A与clinet B不能位于同一个NAT下面,我不知道我的client A 与client B不能通讯的原因是什么:rn1.是由于我的<em>打洞</em>做法错误rn2.由于不支持 “内网环回”rnrnrn如果是原因2,那么说明我的<em>打洞</em>做法是正确的,但是为什么这么<em>打洞</em>是正确 的,我已经说了我的理解是这样<em>打洞</em>是行不通的,那么请告诉我为什么这样<em>打洞</em>是正确的。。。。。。rnrnrn自己想了很久,还是不知道怎么回事,请有经验的高手跟前辈们指教。本人一向很大方分数。散发100,如果答案满意,可以再加。rnrnrn
c# UDP 打洞源码
将网上的一篇关于c#<em>实现</em>的<em>UDP</em> <em>打洞</em> 的文章的源码整理出来了。 可以了解学习一下这方面的知识。 谢谢网上的这篇文章。 网站的链接地址:http://www.vjsdn.com/bbs/bbstopicdetails.aspx?html=0&pid=109221222
UDP打洞软件
使用UPD<em>打洞</em><em>实现</em>两个内网之间之间通讯
UDP打洞测试程序
<em>UDP</em><em>打洞</em>测试程序
UDP打洞和FIREWALL
两台机器其一是CMCC的WLAN,另外一个是Port Restgricted Cone的联通网络,两台机器只能单向打通(只能是PRC-》WLAN方向),检测发现WLAN是Symmetric Firewall,它的一个奇怪特性是和不同主机通讯时其IP地址是动态变化的,比如其向<em>打洞</em>服务器报告的IP是1.2.3.4,但是它向PRC方向<em>打洞</em>时用的IP却变成了6.7.8.9,正是这个原因导致Port Restgricted Cone侧的主机无法向外<em>打洞</em>成功(因为从<em>打洞</em>服务器来的<em>打洞</em>请求中的IP地址和WLAN<em>打洞</em>过来的IP地址是不同的)。这种情况怎么办?是不是无法打通?是否必须通过服务器中转?
关于UDP打洞的理解
各位大大,看了网上好多的关于<em>UDP</em><em>打洞</em>原理一说,我说下我的理解看对不对。rnclientA clientB serverCrn目的:A想跟B通信rn1:A与C通信 C获取A的外网IP及端口rn2:B与C通信 C获取B的外网IP及端口rn3:A给C获取到B的IP端口发消息(被丢弃)rn4:B给C获取到A的IP端口发消息(被丢弃)rn5: 之后A跟B就能直接通信了 rnrn3和4步骤就是在<em>打洞</em>是吧 那么,这样真的可以<em>实现</em>吗,不用去管nat是属于那种类型的吗rn还有 当C获取到的A、B的ip和端口 A、B的路由自动映射的端口会保持多久?
关于UDP协议下的打洞
各位, 我按照 http://www.hack50.com/article/sort07/sort0260/info-365273.html 的步骤验证dup协议下<em>打洞</em>,服务器端在公网。rn但是未能成功,困恼了很多久,请指教。
C#与python实现UDP打洞
C#与python<em>实现</em><em>UDP</em><em>打洞</em>,应用场景是C#系统服务端和基于linux的python设备在不同的局域网下通信,通常C#系统端在办公室内部wifi下,设备在室外利用4G上网。具体参考博文:https://blog.csdn.net/ido1ok/article/details/80066850
UDP外网打洞
NAT穿透,经测试可以使用,通过不同的两个局域网,链接到协助<em>打洞</em>服务器后,关闭服务器,两台不同局域网机器可以互相发送数据
测试udp打洞
使用udp测试p2p<em>打洞</em>的过程
udp打洞原理
首先需要有一台外网server,当client1和client2向server发送一个udp时,server会保存它们的外网ip和端口号。此时client1和client2都可以通过server拿到对方的外网ip和端口号。 client1向client2发送消息,在这一次发送中,由于client2的映射中并没有这条规则,所以client2的网关会拒绝接受这条信息,但此时client1的网关会增加
udp打洞随笔
A向B发送udp,C向B发送udp,B知道了AC的最外层路由所使用的Ip和端口。 B通知AC各自的外网ip和端口。 AB首先尝试向对方发送udp,从而打开门,而后AB相互发送,对方可以接受了。   --- 这是原理,实际上的操作可能依赖很多。...
udp打洞-易语言版
udp<em>打洞</em>-易语言版 服务端和客户端源码 无模块
请教udp打洞?
有udp<em>打洞</em>不成功,都不知道怎么分析了,请教高手啊,rnrn/////////////////////////////////////////rn按照这种方式做的,rnrn内网PC A rn内网PC Brnrn需要A和B 能够socket通讯 现了解 需要<em>打洞</em>借助rnserver CrnrnA向C发消息,C获得A的IP地址和端口,rnB向C发消息,C获得B的IP地址和端口,rnC把B的IP地址和端口告诉A,rnC把A的IP地址和端口告诉B,rnA向B的IP地址和端口发送消息,同时B向A的IP地址和端口发送消息rnrn///////////////////////////////////////rn在打印的日志中,可以看到,rnA有向B发送数据包,rnB有向A发送数据包,rn都用的公网的IP,和端口,------------(从服务器C中获取的)rnrn<em>问题</em>是,在个过程中,过程以后,A,B始终没有收到对方的一个数据包,rnrn///////////////rn请问该怎么分析呢,现在很晕rnrnrnrnrn
关于NAT和UDP打洞
现在关于NAT的类型有 Full Cone NAT ,Restricted Cone NAT,Port Restricted Cone NAT,Symmetric NAT四种类型,要穿透NAT, UPD<em>打洞</em>是不是适合上述所有类型,还是只能适合部分NAT类型。我看的资料上说,<em>UDP</em><em>打洞</em>貌似只能在前三种NAT类型起作用,但是对于Symmetric NAT好像不起作用。为什么<em>UDP</em><em>打洞</em>不能穿透Symmetric NAT这种类型的NAT?
做过UDP打洞的请进
我在做一个p2p的程序,用的是<em>UDP</em><em>打洞</em><em>实现</em>双方均在内部网的通信rnrn我的流程是两个在不同内网的用户A和B,A想跟B点对点交流,因此A先从服务器获取B的公网IP和端口,然后a先向b发送数据包为b打好洞,然后服务器通知b:a要与他点对点交流,然后再把a的ip和端口给b,b收到消息后就为对方<em>打洞</em>,这个思路有<em>问题</em>吗rnrn
udp打洞源码
udp的nat<em>打洞</em>源码,vc6下编译通过,<em>打洞</em>成功。
UDP打洞技术资料合集
NAT可以分为很多种,但是最为普遍的是传统NAT,或者称为向外NAT。向外NAT在默认情况下只允许向外的Session穿越NAT,这就是我们最为常见的情况。
udp打洞代码
udp<em>打洞</em>代码,自己测试并应用到公司的项目中,读者可以根据实际需要更改和完善udp这部分代码。
Windows下的UDP打洞
<em>UDP</em><em>打洞</em>过程 假设A想连接B.首先A发送<em>打洞</em>消息给Server,让Server告诉B有人想与你建立通话通道,Server将A的IP信息转发给B B收到命令后向A发一个<em>UDP</em>包,此时B的NAT会建立一个与A通讯的Session. 然后A再次向B发送<em>UDP</em>包B就能收到了
关于 UDP打洞~~
内网PC A rn内网PC Brnrn需要A和B 能够socket通讯 现了解 需要<em>打洞</em>借助rnserver Crnrn由A发送信息到C C再告诉B 往A <em>打洞</em>,rn然后A就可以和B通讯了,rnrn<em>问题</em>来了:rn1.我上面说的对不对,如果不对应该是什么样的。rn2.C 如何 告诉B要向A<em>打洞</em> ,然后B 又是如何 向A <em>打洞</em>的 ,C#里应该是什么函数<em>实现</em>的,rn3.洞打通了,A 要向B 发送信息,需要指定的IP和端口是怎么获取的,通过什么函数可以获取
求教UDP打洞高手
公网Server S能接受到某一公司内网主机E1发来的登陆消息,但是S返回的消息,E1无法接收。是否是公司网关拦截导致的?rn代码如下。S端线输入SINIT,然后E1端运行E1Init,然后E1无法接受返回消息。rnrn static void Main(string[] args)rn rn rn string serveraddr = "116.233.234.159";rn int port = 8600;rn long e1Addr = 0, e2Addr = 0;rn int e1Port = 0, e2Port = 0;rn System.Net.Sockets.UdpClient u = new System.Net.Sockets.UdpClient(port);rn while (true)rn rn string cm = Console.ReadLine();rn if (cm == "SINIT")rn rn while (true)rn rn System.Net.IPEndPoint ep = new System.Net.IPEndPoint(0, 0);rn byte[] msg = u.Receive(ref ep);rn if (Encoding.ASCII.GetString(msg) == "Hello1")rn rn e1Addr = ep.Address.Address;rn e1Port = ep.Port;rn for(int i=0;i), 6, ep);rn byte[] msg = u.Receive(ref ep);rn Console.WriteLine(Encoding.ASCII.GetString(msg));rn ep = new System.Net.IPEndPoint(0, 0);rn msg = u.Receive(ref ep); rn Console.WriteLine(Encoding.ASCII.GetString(msg));rn rn rn
UDP打洞原理
本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 许多P2P软件比如SKYPE,QQ,电驴之类需要不同内网的两台机子进行通信,而路由器的NAT机制决定了内网访问外网容易,而外网访问内网困难,那如何才能做到这一点呢?有办法------<em>打洞</em>! 具体<em>实现</em>方法需要一台服务器,现在假设两台内网PC,A和B想用端口40000通信,网关分别为NATA,NAT...
UDP .NAT 打洞困惑
看<em>UDP</em> NAT文章 说 A 发送信息给B 如果直接发 会被拒绝 那就是必须通知服务器 让B发给A<em>打洞</em>信息 。。。。我看了不明白呀 那还不是 B发给A 也不是直接发吗。。。。A为什么不拒绝,。。。。。。。心思不明白 请指教
UDP网络穿透/打洞
<em>UDP</em>穿透, NAT穿透, P2P, <em>UDP</em><em>打洞</em>
UDP打洞原理总结
一直听人家说<em>UDP</em><em>打洞</em>,或者你想<em>实现</em>两个局域网之间进行通信,那么,看一下<em>UDP</em><em>打洞</em>原理吧,也许能帮到你。
UDP打洞P2P技术
P2P技术,<em>UDP</em><em>打洞</em>,穿越NAT,服务器与客户端程序源码。学习P2P技术,<em>UDP</em><em>打洞</em>的非常好的资料。 《[WINDOWS网络与通信程序设计].王艳平》第十章源码
UDP打洞demo
c#版udp<em>打洞</em><em>实现</em>,server放到一个有固定IP的服务上,两个client借助server<em>打洞</em>后直接通讯. 原理网上有一堆,就不细说了,压缩包内也放了一篇网上down的原理供参考
UDP P2P打洞服务器
1.时延客户端与服务器的互通。2.服务器完成<em>打洞</em>。3.客户端与客户端之前<em>实现</em>互通
UDP打洞求解
做一个网络聊天程序,需要进行内网穿透,但是对<em>打洞</em>这方面不甚清楚,请教<em>打洞</em>详细步骤,能有源码最好!
UDP打洞失败不理解
最近需要做一个非局域网通信的东西。需要用到<em>打洞</em>技术。rn于是我按照网上说的做了一个非局域网<em>打洞</em>的程序。rn但是,不管怎么样。A和B得到对方的NAT地址后始终无法收到对方的消息。rn有没有高手能来看一下,到底是哪里的<em>问题</em>。rn如果是代码的<em>问题</em>,我已经找了很久了,一直不知道毛病在哪里。rn如果是方法的<em>问题</em>,能不能告诉我一下,让我别再浪费时间了。麻烦高手看一看rnrn<em>打洞</em>原理如下rn[img=https://img-bbs.csdn.net/upload/201707/23/1500792392_989207.png][/img]rnrn下面是代码。rn服务器:rn[code=c]rn#include rn#include rn#pragma comment (lib, "ws2_32.lib")rnrn#define BUF_SIZE 100rnrnint main() rn WSADATA wsaData;rn WSAStartup(MAKEWORD(2, 2), &wsaData);rnrn //创建套接字rn SOCKET servSock = socket(AF_INET, SOCK_DGRAM, 0);rn //绑定套接字rn sockaddr_in sockAddr;//本机服务器地址rn memset(&sockAddr, 0, sizeof(sockAddr)); //每个字节都用0填充rn sockAddr.sin_family = PF_INET; //使用IPv4地址rn sockAddr.sin_addr.s_addr = htonl(INADDR_ANY); //自动获取自己的ip地址rn sockAddr.sin_port = htons(10086); //监听服务端口rn bind(servSock, (SOCKADDR*)&sockAddr, sizeof(SOCKADDR));//绑定端口rnrn //接收客户端请求rn sockaddr_in clntAddr1; //客户端1地址信息rn int nSize = sizeof(SOCKADDR);rn char RecvBuffer[BUF_SIZE]; //缓冲区rn int strLen = recvfrom(servSock, RecvBuffer, BUF_SIZE, 0, (struct sockaddr*)&clntAddr1, &nSize);rnrn sockaddr_in clntAddr2; //客户端2地址信息rn strLen = recvfrom(servSock, RecvBuffer, BUF_SIZE, 0, (struct sockaddr*)&clntAddr2, &nSize);rnrn //把两边的地址准备好发送rn char bufSend1[BUF_SIZE];rn memset(bufSend1, '\0', sizeof(bufSend1));rn char* ip1 = inet_ntoa(clntAddr2.sin_addr);rn char port1[10];rn _itoa_s(ntohs(clntAddr2.sin_port), port1, 10);rn for (int i = 0; irn#include rn#pragma comment(lib, "ws2_32.lib")rnrn#define BUF_SIZE 100rnrnint main() rn //初始化DLLrn WSADATA wsaData;rn WSAStartup(MAKEWORD(2, 2), &wsaData);rn //创建套接字rn SOCKET sock = socket(PF_INET, SOCK_DGRAM, 0);rnrn //服务器地址信息rn sockaddr_in servAddr;rn memset(&servAddr, 0, sizeof(servAddr)); //每个字节都用0填充rn servAddr.sin_family = PF_INET;rn servAddr.sin_addr.s_addr = inet_addr("114.55.101.163");rn servAddr.sin_port = htons(10086);rnrn //发送给服务器自己地址rn sockaddr fromAddr;rn int addrLen = sizeof(fromAddr);rn char SendBuffer[BUF_SIZE] = 0 ;rn sendto(sock, SendBuffer, strlen(SendBuffer), 0, (struct sockaddr*)&servAddr, sizeof(servAddr));rnrn //接收服务器传来的对面的地址rn char RecvBuffer[BUF_SIZE] = 0 ;rn int strLen = recvfrom(sock, RecvBuffer, BUF_SIZE, 0, &fromAddr, &addrLen);rnrn //解析对面的地址rn char ip[20];rn char port[10];rn int i;rn for (i = 0; i
关于udp打洞的新问题
请问 两个程序 他们各自都在内网 在 互相知道对方公网ip和对方udp绑定的端口 后 是不是就不用服务器帮助<em>打洞</em>:p2p两端向各自的NAT设备不断发送 是不是就打通个了呢?rn因为据我的理解 公网上要是设服务器只是充当了一个交换信息,把它的ip pork告诉你 把你的 ip pork告诉它的作用rn我这样理解是否有错?rn希望有经验的人指点一下 感激不尽rn辛苦你们了!
udp打洞原理详解
清晰描述udp<em>打洞</em>的原理;局域网与局域网之间通讯的好方法;腾讯qq局域网之间也是这个原理。
UDP打洞示例
<em>UDP</em><em>打洞</em>示例,已测试过.
关于UDP的NAT打洞
1. 我上网看到CONE方式<em>打洞</em>是通过服务端转发<em>打洞</em>消息到对方客户端,再由对方客户端返回消息到源客户端的洞.以完成双方<em>打洞</em>过程.但我想了另一种方法,但不知可不可行,我的方法是客户端到服务端通过心跳维持一个洞,而P2P时不用另<em>打洞</em>了.如C1向服务端心跳,服务端记录C1的洞.C2也是一样.当C2与C1通讯时,只要向服务端请求C1的<em>打洞</em>信息,就住C1的洞发消息,C1要发消息,也向服务端请求C2的洞的信息.这种方式不知可不可行,请大家给点意见.rnrn2.我是做一个点对点对聊程序,用来学习P2P的.用<em>UDP</em>,客户端用重叠模式接收的.我有一个全局的SOCKET变量,用来保存监听的SOCKET,因为要定时向服务端<em>打洞</em>.所以我必需要用这SOCKET向服务端<em>打洞</em>.因为我<em>UDP</em>监听是通过循环WSARECVFROM阻塞来达到监听的目的,我尝试在另一线程通过该SOCKET向服务端<em>打洞</em>.但每次都在SENDTO时被阻塞.若我不用监听,则可以顺利发送.请问有什么方法可以使该SOCKET可以双工运行?(不过我的发送是用SENDTO而不是WSASENDTO,而SOCKET是用WSASOCKET建立的.请问这样有<em>问题</em>吗?)
TCP/UDP打洞
TCP <em>UDP</em> <em>打洞</em>技术,作为基础了解,值得一看。
UDP打洞技术与应用
许多P2P软件比如SKYPE,QQ,电驴之类需要不同内网的两台机子进行通信,而路由器的NAT机制决定了内网访问外网容易,而外网访问内网困难,那如何才能做到这一点呢?有办法------<em>打洞</em>!   具体<em>实现</em>方法需要一台服务器,现在假设两台内网PC,A和B想用端口40000通信,网关分别为NATA,NATB.服务器为S,配置如下: A:             192.168.0.34
UDP打洞的p2p聊天程序
使用<em>UDP</em><em>打洞</em>的p2p聊天程序,程序分为一个服务器和一个客户端,适用于穿越一般情况下的NAT
UDP打洞测试程序.rar
本代码为<em>UDP</em><em>打洞</em>原理的测试程序。为了简单起见,该程序服务器就接收两个客户端的连接,使两客户端建立<em>UDP</em>通道。两客户端建立<em>UDP</em>通道后,互相发送的数据不经过服务器转发,直接进行数据交互,这时可以关闭服务器程序。服务器的默认服务端口是10000,如果该端口已经被占用,请自行修改服务端口。
内网穿透&UDP打洞
这两天找度度重新回忆了一下关于内网穿透的事情,在百度文库上找到了两三篇写的比较通俗易懂的文章,把内网穿透做个简单总结。   首先文章建议 Cone NAPT 还有希望,要是 Symmetri NAPT 就别想了,接着介绍了两种基本情况,一是一台内网机器连接外网通信的情况,二是两台内网之间互联的情况。   第一种,只需要内网主动发起连接就可以了。内网机器A(192.168.1.x:4000...
UDP 打洞原理
1. NAT分类 根据Stun协议(RFC3489),NAT大致分为下面四类 1) Full Cone 这种NAT内部的机器A连接过外网机器C后,NAT会打开一个端口.然后外网的任何发到这个打开的端口的<em>UDP</em>数据报都可以到达A.不管是不是C发过来的. 例如 A:192.168.8.100 NAT:202.100.100.100 C:292.88.88.88 A(192.168.8.100:5000...
UDP打洞过程
client-A  client-B  server-C 目的:A想跟B通信 1:A与C通信  C获取A的外网IP及端口 2:B与C通信  C获取B的外网IP及端口 3:A给C获取到B的IP端口发消息(被丢弃) 4:B给C获取到A的IP端口发消息(被丢弃) 5: 之后A跟B就能直接通信了
UDP打洞代码
这是别人写的一个<em>UDP</em><em>打洞</em>的代码,基于NAT穿透而<em>实现</em>的
C#实现udp打洞客户端与服务器端源码
C#<em>实现</em>udp<em>打洞</em>客户端与服务器端源码 。 <em>实现</em>获取在线用户列表,客户端点对点通信
udp打洞源码服务端和客户端C# 实现
udp<em>打洞</em>源码服务端和客户端C# <em>实现</em> <em>实现</em>C# <em>UDP</em><em>打洞</em>服务端与客户端
delphi实现p2p打洞udp协议的实例!
delphi<em>实现</em>p2p<em>打洞</em>udp协议的实例!初学者非常有用
UDP协议下打洞技术的原理及实现
想通过<em>UDP</em>套接字,<em>实现</em>互联网的通讯,不可避免的要<em>实现</em><em>打洞</em>技术.这是<em>UDP</em><em>打洞</em>技术的原理及<em>实现</em>.
udp打洞的原理是什么,具体怎么实现
udp<em>打洞</em>的原理是什么,具体怎么<em>实现</em>?
C语言实现UDP打洞代码
这是一个用c语言<em>实现</em>的<em>UDP</em>的<em>打洞</em>代码,可以聊天,加了一个离线判断,上下线通知,立即客户端一段时间与主机通信,判断是否与主机断开连接
P2P传输UDP打洞源码
在传输数据时需要进行<em>打洞</em>处理,这样才能进行点对点传输数据,资源文件是通过<em>UDP</em><em>打洞</em>的源码,使用C++开发,在Windows上验证通过,仅限于学习测试,请勿使用在商业用途上。
UDP打洞资料--基于C#
用C#语言写的<em>UDP</em><em>打洞</em>代码 虽然没有项目文件,但代码保证没有错误
udp打洞代码的rar文件
udp<em>打洞</em>代码的rar文件udp<em>打洞</em>代码的rar文件udp<em>打洞</em>代码的rar文件udp<em>打洞</em>代码的rar文件
NAT(网络地址转换器)&UDP打洞
首先我们要认识NAT设备,NAT英文全拼是Network Address Translator(网络地址转换器),说白了就是凡是经过NAT发出去的数据包,都会通过一定的端口转换(而非使用原端口)再发出去,也就是说内网和外网之间的通信不是直接由内网机器与外网NAT进行,而是利用内网对外网的NAT建立起SESSION与外网NAT的SESSION进行。 根据SESSION的不同,NAT主要分成两种:Sy
SocketTools 7.2 library下载
SocketTools 7.2 library  相关下载链接:[url=//download.csdn.net/download/nhlive/4234951?utm_source=bbsseo]//download.csdn.net/download/nhlive/4234951?utm_source=bbsseo[/url]
祖冲之算法规范下载
The ZUC algorithm is the core of the standardised 3GPP Confidentiality and Integrity algorithms 128-EEA3 & 128-EIA3. 相关下载链接:[url=//download.csdn.net/download/leechiyang/5008537?utm_source=bbsseo]//download.csdn.net/download/leechiyang/5008537?utm_source=bbsseo[/url]
volley对应的服务器端的代码下载
这个资源文件对应着本人的博客http://blog.csdn.net/nipeng00/article/details/13669177 相关下载链接:[url=//download.csdn.net/download/nipengwkd/6478363?utm_source=bbsseo]//download.csdn.net/download/nipengwkd/6478363?utm_source=bbsseo[/url]
相关热词 c# stream 复制 android c# c#监测窗口句柄 c# md5 引用 c# 判断tabtip 自己写个浏览器程序c# c# 字符串变成整数数组 c#语言编程写出一个方法 c# 转盘抽奖 c#选中treeview
我们是很有底线的