社区
C#
帖子详情
局域网内的PC如何实现互联网间SOCKET通信
WWWFIND
2009-12-21 03:16:35
不同局域网内的两台PC,分别通过路由器防火墙连接到INTERNET,如何实现这两台PC间的TCP或者UDP通信?
而不必手动设置路由器和防火墙。
...全文
940
12
打赏
收藏
局域网内的PC如何实现互联网间SOCKET通信
不同局域网内的两台PC,分别通过路由器防火墙连接到INTERNET,如何实现这两台PC间的TCP或者UDP通信? 而不必手动设置路由器和防火墙。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
only_lonely
2009-12-21
打赏
举报
回复
[Quote=引用 2 楼 lindenrty 的回复:]
如果就这2台机器 不设路由器似乎没可能
我只看到过这样的例子 2台机器由第三台公网IP的机器中转实现互联
不过这样还不如改网关方便
[/Quote]
直接通讯,得动路由,使用端口映射
不动路由,得有个公网的IP
ck11926375
2009-12-21
打赏
举报
回复
nat穿透,没做过。网上应该有
wxxloveu
2009-12-21
打赏
举报
回复
这个用P2P打洞啊,去我空间看我的贴吧
wangxiao2008
2009-12-21
打赏
举报
回复
up
lindenrty
2009-12-21
打赏
举报
回复
转贴
原帖地址:http://www.vjsdn.com/bbs/bbstopicdetails.aspx?html=0&pid=109221225
A->B打洞过程:
说明:
A:用户A
B:用户B
NA:NAT网络A
NB:NAT网络B
Server C为外网的机器(服务器或消息中转站)
A想与B建立通信通道,A to B打洞:
1.A ---> NA ---> Server C ---> NB ---> B
2.B---->A (打洞完成)
1,如果A想与B通信;
2,A首先连接 C, C得到A的外网NA的地址和端口;
3,B也要连接C,C得到B的外网NB的地址和端口;
4,A告诉C说我要和B通讯;
5,C通过NB发信息给B,告诉B A的外网NA的地址和端口;
6,B向NA发数据包(肯定会被NA丢弃,因为NA上并没有 A->NB 的合法session),
但是NB上就建立了有B->NA的合法session了;
7,B发数据包给C,让 C 通知 A,我已经把洞打好了;
8,A接受到通知后向 B 的外网发NB数据包,这样就不会被丢弃掉了。因为对于NB来说,它看到的是A的外网NA的地址,
而通过第6步,B已经让NA成为NB的合法通信对象了。所以当NA发数据包给NB时,NB就会接收并转发给B;
如果是做项目的话 这个方案也许比较合适
现在的P2P软件的内网互联,LowID to LowID也是采用的这类手段
但是路由上有防火墙规则的话,可能会被屏蔽掉
vrhero
2009-12-21
打赏
举报
回复
除非这两台PC其中有一台是完全暴露的DMZ主机或者使用预设TCP或UDP映射的IP,并且这台PC所在的网络有公共IP...
所以...“不必手动设置路由器和防火墙”基本是不可能的,而且如果没有公共IP或第三方公共IP转发就算你“设置路由器和防火墙”也是不可能的...
lindenrty
2009-12-21
打赏
举报
回复
[Quote=引用 3 楼 hyblusea 的回复:]
简单的需求还可以使用WCF或者WEBSERVICE
单纯用SOCKET好像比较困难。我自己没有试成功过。需要用到打洞穿透NAT。
[/Quote]
如果我没理解错打洞技术 也许要第3台公网机器的协助才能实现
jimh
2009-12-21
打赏
举报
回复
要通信就必须要有公网IP和端口,有下面几个方法
1,用公网第三台机器中转
2,其中一台的局域网路由器做一个端口映射,相当于一台机器开放一个公网IP下的端口。
3,应该没有第三条路了
zhouyanfss
2009-12-21
打赏
举报
回复
说难很难,说简单也简单
那就说简单的,用路由器的端口映射功能,就是在各自路由器上设置你TCP通讯的端口映射到各自电脑的IP就可以了
hyblusea
2009-12-21
打赏
举报
回复
简单的需求还可以使用WCF或者WEBSERVICE
单纯用SOCKET好像比较困难。我自己没有试成功过。需要用到打洞穿透NAT。
lindenrty
2009-12-21
打赏
举报
回复
如果就这2台机器 不设路由器似乎没可能
我只看到过这样的例子 2台机器由第三台公网IP的机器中转实现互联
不过这样还不如改网关方便
hyblusea
2009-12-21
打赏
举报
回复
SF??
可以参考一下:
http://www.pudn.com/downloads11/sourcecode/internet/detail45936.html
Android
Socket
编程实例(与
PC
通信
,不同手机中
间
通信
)
在提供的"Android
Socket
demo"压缩包中,可能包含了一个简单的Android
Socket
通信
示例项目,包括客户端和服务器端的代码
实现
,你可以通过学习和运行这个示例来加深对Android
Socket
编程的理解。记得在实际部署时,...
基于
socket
的
PC
局域网
TCP
通信
测试软件
标题中的“基于
socket
的
PC
局域网
TCP
通信
测试软件”是指一个使用了
Socket
编程技术,设计用于
PC
(个人计算机)在
局域网
内进行TCP(传输控制协议)
通信
的测试工具。这个工具可能是由Vc6.0,即Visual C++ 6.0开发环境...
基于HP-
Socket
的
局域网
通信
工具(仿QQ)
本项目——“基于HP-
Socket
的
局域网
通信
工具(仿QQ)”,就是这样一个实例,它通过HP-
Socket
库
实现
了类似QQ的功能,包括登录验证、用户注册和好友
间
的即时聊天。 首先,HP-
Socket
是专为Java设计的一个高性能、轻量...
树莓派与
PC
端在
局域网
内运用python
实现
即时通讯
电脑和树莓派在同一
局域网
内,先在电脑和树莓派创建python运行环境,然后在树莓派中用python运行rpi.py;在电脑上运行computer.py;电脑上输入字符即可在树莓派上即时显示! rpi.py #coding:utf-8 #import ...
局域网
内Android与
PC
平台剪贴板同步功能的
实现
.pdf
总之,通过
Socket
技术和Android、Python的结合,可以有效地
实现
在
局域网
内Android设备与
PC
之
间
的剪贴板同步。这一功能的
实现
不仅提升了用户体验,也展示了智能终端与
PC
平台之
间
更深层次的整合可能性。
C#
111,112
社区成员
642,555
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章