一\环境:
以下的两个局域网都可以连接到internet,局域网内的机器通过路由器共享上网
1\局域网A:外网ip 211.157.1.3 局域网内的节点A:192.168.1.2:60001
2\局域网B:外网ip 211.157.1.4 局域网内的节点B:192.168.2.2:60002二\实现功能
那么我如何实现节点A与节点B间的数据传送呢?
通过TCP或UDP,但IpEndPoint应该是什么呢?
以下的两个局域网都可以连接到internet,局域网内的机器通过路由器共享上网
1\局域网A:外网ip 211.157.1.3 局域网内的节点A:192.168.1.2:60001
2\局域网B:外网ip 211.157.1.4 局域网内的节点B:192.168.2.2:60002二\实现功能
那么我如何实现节点A与节点B间的数据传送呢?
通过TCP或UDP,但IpEndPoint应该是什么呢?
一般通过UDP进行通讯涉及到UDP的打洞原理需要一台外部的机器来协助打洞
web service差不多,测试一下代码看看是否能实现:)
是不是大家搞错了啊
他只是想局域网的两个点通讯,不是要和外部通讯啊
System.Net.IPEndPoint ip = new IPEndPoint("192.168.1.2", 60001);
这样就可以吧,需要P2P吗路由器难道不知道这个是另外一个内网的IP吗,肯定会转发到另外一个内网吧
小弟乱说的,错了不要骂人啊
一\P2P的环境
1\P2P服务器:用于存储客户端的信息(如客户端网络端点地址,客户端属性等等)
2\P2P客户端:至少2个,这样才能达到客户端向客户端共享的需要
P2P客户端启动时都需要向P2P服务器发送登陆消息
并从P2P服务器得接收到其它所有P2P客户端信息(如客户端网络端点地址等),
退出时都要向P2P服务器发送注销消息
二\P2P运行流程
1\P2P服务器启动,随时监听P2P客户端的登陆\注销等等事件
2\由私网的网络端点转换为公网的网络端点
这P2P客户端各自的NAT(Network Address Translators)来完成的,
(如私网网络端点1.1.1.1:1000 =>公网网络端点211.157.1.3:40000),
并且在P2P客户端向P2P服务器端发送登陆请求时由服务器记录下其公网的网络端点地址(211.157.1.3:40000)三、示例
1、环境
P2P服务器:211。157。1。1:1000
P2P客户端A:192。168。1。2:2000(私网端点)、211。157。1。2:2000(对应的公网端点)
P2P客户端B:192。168。1。3:3000(私网端点)、211。157。1。3:3000(对应的公网端点)2、事件:P2P客户端A、P2P客户端B登陆到P2P服务器后,P2P客户端B向P2P客户端A发送共享数据
P2P服务器启动.....
P2P客户端A,登陆到P2P服务器.....:P2P服务器记录P2P客户端A的网络端点-211。157。1。2:2000......
P2P客户端B,登陆到P2P服务器.....:P2P服务器记录P2P客户端B的网络端点-211。157。1。3:3000......
P2P服务器向P2P客户端广播发送所有P2P客户端信息(公网网络端口等等)......
P2P客户端B向P2P客户端A发送数据(B从P2P服务器上获得的A的网络端点211。157。1。2:2000)......=============================================================上面是我的个人理解,由于没有公网服务器做测试,希望能看到大家的看法:)
最简单的是端口不变的映射对于协议而言,UDP穿透比较容易,如果你想建立TCP的穿透连接,就困难很多了web service服务在处理这个方面能力比较弱,你需要直接取得SOCK包,甚至要伪造SOCK包来完成
P2P服务器启动.....
P2P客户端A,登陆到P2P服务器.....:P2P服务器记录P2P客户端A的网络端点-211。157。1。2:2000......
P2P客户端B,登陆到P2P服务器.....:P2P服务器记录P2P客户端B的网络端点-211。157。1。3:3000......
P2P服务器向P2P客户端广播发送所有P2P客户端信息(公网网络端口等等)......
P2P客户端B向P2P客户端A发送数据(B从P2P服务器上获得的A的网络端点211。157。1。2:2000)......
比如你这个描述,
第一NAT必须是端口不变的映射
第二P2P客户端B向P2P客户端A发送数据(B从P2P服务器上获得的A的网络端点211。157。1。2:2000)......
这一消息,会被A的路由器自动放弃(2000端口是只用于和P2P服务器打交道的,其它IP对这个端口的包,被认为是攻击)所以你根本建立不起连接,要完成这一步骤,你需要找本P2P的书,好好了解下
目前P2P做的最好的,我觉得是SKPYTE,基本上QQ\MSN都用不起来的情况下,SKPYTE是最后的选择