以下的两个局域网都可以连接到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应该是什么呢?
22 个解决方案
#1
最简单的webservice
#2
可是如何实现呢?
我只是想做节点到节点间的数据传送.
我只是想做节点到节点间的数据传送.
#3
这个是典型的P2P问题
一般通过UDP进行通讯
涉及到UDP的打洞原理
需要一台外部的机器来协助打洞
一般通过UDP进行通讯
涉及到UDP的打洞原理
需要一台外部的机器来协助打洞
#4
yumanqing 指的是通过在服务器端发布一个web service(FileService)来实现客户端 -> FileService的下载文件与上传文件吗?
#5
cxx1997 指的是需要代理还是需要做Network Address Translation,网络地址转换(早上在我的帖子中看到的)?
#6
你说的点对点传输,类似QQ的,可能webservice不适合,不过也可以实现
#7
web service是需要发布后使用的资源,需要如何操作呢?
#8
我想web service的方式,是通过中转服务器来中转所有数据
我讲的P2P模式下,是需要一个网络地址转换负责帮助两个点建立连接,连接建立后就可以直接访问对方
否则的话就需要有一台机器能提供外网访问端口了
如果你已知你的网络设备类型,还可以通过广播的方式来寻找连接所需要的端口,不过就不通用了,你需要非常确定两台机器的上网类型
我讲的P2P模式下,是需要一个网络地址转换负责帮助两个点建立连接,连接建立后就可以直接访问对方
否则的话就需要有一台机器能提供外网访问端口了
如果你已知你的网络设备类型,还可以通过广播的方式来寻找连接所需要的端口,不过就不通用了,你需要非常确定两台机器的上网类型
#9
TO:cxx1997
我刚看到一篇有关P2P与NET的文章 ,上面的P2P服务器端的作用就和你说的
web service差不多,测试一下代码看看是否能实现:)
我刚看到一篇有关P2P与NET的文章 ,上面的P2P服务器端的作用就和你说的
web service差不多,测试一下代码看看是否能实现:)
#10
这个问题是什么意思啊
是不是大家搞错了啊
他只是想局域网的两个点通讯,不是要和外部通讯啊
System.Net.IPEndPoint ip = new IPEndPoint("192.168.1.2", 60001);
这样就可以吧,需要P2P吗
路由器难道不知道这个是另外一个内网的IP吗,肯定会转发到另外一个内网吧
小弟乱说的,错了不要骂人啊
是不是大家搞错了啊
他只是想局域网的两个点通讯,不是要和外部通讯啊
System.Net.IPEndPoint ip = new IPEndPoint("192.168.1.2", 60001);
这样就可以吧,需要P2P吗
路由器难道不知道这个是另外一个内网的IP吗,肯定会转发到另外一个内网吧
小弟乱说的,错了不要骂人啊
#11
楼上的小兄弟考虑的问题还比较少啊
内网里很多机器,路由器怎么知道你是发给哪台呢?
所以P2P还是很复杂的
内网里很多机器,路由器怎么知道你是发给哪台呢?
所以P2P还是很复杂的
#12
欢迎大家讨论和帮助:)
#13
關注,幫頂。
#14
谁给提供一个公网地址测试一下P2P的程序先~~~~~~~~~~~`
#15
关于P2P,我的理解:
一\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)......
=============================================================
上面是我的个人理解,由于没有公网服务器做测试,希望能看到大家的看法:)
一\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)......
=============================================================
上面是我的个人理解,由于没有公网服务器做测试,希望能看到大家的看法:)
#16
所以我理解的web service服务实现,也只是WEB SERVICE替代了如上的P2P服务器,
也可以使用其它的东东来替代P2P服务器。
也可以使用其它的东东来替代P2P服务器。
#17
序列化数据进行传输啊
#18
#19
是的,如上面的解释C -> S S-> C C->C 数据都是序列化数据进行传输的,
序列化数据进行传输感觉不是P2P的重点吧....
序列化数据进行传输感觉不是P2P的重点吧....
#20
P2P有一个很重要的能力就是判断 节点的上网类型
NAT设备在处理内网和外网映射时区别很大
最简单的是端口不变的映射
对于协议而言,UDP穿透比较容易,如果你想建立TCP的穿透连接,就困难很多了
web service服务在处理这个方面能力比较弱,你需要直接取得SOCK包,甚至要伪造SOCK包来完成
NAT设备在处理内网和外网映射时区别很大
最简单的是端口不变的映射
对于协议而言,UDP穿透比较容易,如果你想建立TCP的穿透连接,就困难很多了
web service服务在处理这个方面能力比较弱,你需要直接取得SOCK包,甚至要伪造SOCK包来完成
#21
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)......
比如你这个描述,
第一NAT必须是端口不变的映射
第二P2P客户端B向P2P客户端A发送数据(B从P2P服务器上获得的A的网络端点211。157。1。2:2000)......
这一消息,会被A的路由器自动放弃(2000端口是只用于和P2P服务器打交道的,其它IP对这个端口的包,被认为是攻击)
所以你根本建立不起连接,要完成这一步骤,你需要找本P2P的书,好好了解下
目前P2P做的最好的,我觉得是SKPYTE,基本上QQ\MSN都用不起来的情况下,SKPYTE是最后的选择
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是最后的选择
#22
感谢大家的帮助和讨论,接分了:)
#1
最简单的webservice
#2
可是如何实现呢?
我只是想做节点到节点间的数据传送.
我只是想做节点到节点间的数据传送.
#3
这个是典型的P2P问题
一般通过UDP进行通讯
涉及到UDP的打洞原理
需要一台外部的机器来协助打洞
一般通过UDP进行通讯
涉及到UDP的打洞原理
需要一台外部的机器来协助打洞
#4
yumanqing 指的是通过在服务器端发布一个web service(FileService)来实现客户端 -> FileService的下载文件与上传文件吗?
#5
cxx1997 指的是需要代理还是需要做Network Address Translation,网络地址转换(早上在我的帖子中看到的)?
#6
你说的点对点传输,类似QQ的,可能webservice不适合,不过也可以实现
#7
web service是需要发布后使用的资源,需要如何操作呢?
#8
我想web service的方式,是通过中转服务器来中转所有数据
我讲的P2P模式下,是需要一个网络地址转换负责帮助两个点建立连接,连接建立后就可以直接访问对方
否则的话就需要有一台机器能提供外网访问端口了
如果你已知你的网络设备类型,还可以通过广播的方式来寻找连接所需要的端口,不过就不通用了,你需要非常确定两台机器的上网类型
我讲的P2P模式下,是需要一个网络地址转换负责帮助两个点建立连接,连接建立后就可以直接访问对方
否则的话就需要有一台机器能提供外网访问端口了
如果你已知你的网络设备类型,还可以通过广播的方式来寻找连接所需要的端口,不过就不通用了,你需要非常确定两台机器的上网类型
#9
TO:cxx1997
我刚看到一篇有关P2P与NET的文章 ,上面的P2P服务器端的作用就和你说的
web service差不多,测试一下代码看看是否能实现:)
我刚看到一篇有关P2P与NET的文章 ,上面的P2P服务器端的作用就和你说的
web service差不多,测试一下代码看看是否能实现:)
#10
这个问题是什么意思啊
是不是大家搞错了啊
他只是想局域网的两个点通讯,不是要和外部通讯啊
System.Net.IPEndPoint ip = new IPEndPoint("192.168.1.2", 60001);
这样就可以吧,需要P2P吗
路由器难道不知道这个是另外一个内网的IP吗,肯定会转发到另外一个内网吧
小弟乱说的,错了不要骂人啊
是不是大家搞错了啊
他只是想局域网的两个点通讯,不是要和外部通讯啊
System.Net.IPEndPoint ip = new IPEndPoint("192.168.1.2", 60001);
这样就可以吧,需要P2P吗
路由器难道不知道这个是另外一个内网的IP吗,肯定会转发到另外一个内网吧
小弟乱说的,错了不要骂人啊
#11
楼上的小兄弟考虑的问题还比较少啊
内网里很多机器,路由器怎么知道你是发给哪台呢?
所以P2P还是很复杂的
内网里很多机器,路由器怎么知道你是发给哪台呢?
所以P2P还是很复杂的
#12
欢迎大家讨论和帮助:)
#13
關注,幫頂。
#14
谁给提供一个公网地址测试一下P2P的程序先~~~~~~~~~~~`
#15
关于P2P,我的理解:
一\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)......
=============================================================
上面是我的个人理解,由于没有公网服务器做测试,希望能看到大家的看法:)
一\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)......
=============================================================
上面是我的个人理解,由于没有公网服务器做测试,希望能看到大家的看法:)
#16
所以我理解的web service服务实现,也只是WEB SERVICE替代了如上的P2P服务器,
也可以使用其它的东东来替代P2P服务器。
也可以使用其它的东东来替代P2P服务器。
#17
序列化数据进行传输啊
#18
#19
是的,如上面的解释C -> S S-> C C->C 数据都是序列化数据进行传输的,
序列化数据进行传输感觉不是P2P的重点吧....
序列化数据进行传输感觉不是P2P的重点吧....
#20
P2P有一个很重要的能力就是判断 节点的上网类型
NAT设备在处理内网和外网映射时区别很大
最简单的是端口不变的映射
对于协议而言,UDP穿透比较容易,如果你想建立TCP的穿透连接,就困难很多了
web service服务在处理这个方面能力比较弱,你需要直接取得SOCK包,甚至要伪造SOCK包来完成
NAT设备在处理内网和外网映射时区别很大
最简单的是端口不变的映射
对于协议而言,UDP穿透比较容易,如果你想建立TCP的穿透连接,就困难很多了
web service服务在处理这个方面能力比较弱,你需要直接取得SOCK包,甚至要伪造SOCK包来完成
#21
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)......
比如你这个描述,
第一NAT必须是端口不变的映射
第二P2P客户端B向P2P客户端A发送数据(B从P2P服务器上获得的A的网络端点211。157。1。2:2000)......
这一消息,会被A的路由器自动放弃(2000端口是只用于和P2P服务器打交道的,其它IP对这个端口的包,被认为是攻击)
所以你根本建立不起连接,要完成这一步骤,你需要找本P2P的书,好好了解下
目前P2P做的最好的,我觉得是SKPYTE,基本上QQ\MSN都用不起来的情况下,SKPYTE是最后的选择
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是最后的选择
#22
感谢大家的帮助和讨论,接分了:)