社区
C#
帖子详情
局域网内的PC如何实现互联网间SOCKET通信
WWWFIND
2009-12-21 03:16:35
不同局域网内的两台PC,分别通过路由器防火墙连接到INTERNET,如何实现这两台PC间的TCP或者UDP通信?
而不必手动设置路由器和防火墙。
...全文
880
12
打赏
收藏
局域网内的PC如何实现互联网间SOCKET通信
不同局域网内的两台PC,分别通过路由器防火墙连接到INTERNET,如何实现这两台PC间的TCP或者UDP通信? 而不必手动设置路由器和防火墙。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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 app与
pc
通信
,USB连接
socket
通信
,
android app通过usb连接电脑,用
socket
建立连接。 适用无网环境(无wifi),通过usb来组建
局域网
。一般银行单位或是需要保密的电脑用得上
socket
demo
局域网
通信
工具
局域网
通信
工具,源码,含客户端和服务器端,
pc
用,也可以连接手机端。 源码未包含app端
异地
局域网
(虚拟
局域网
)纯软件组网方法
课程简介详细讲解通过软件
实现
异地组建
局域网
(虚拟
局域网
),大幅减少硬件成本。应用场景:1、企业级ERP2、在家远程访问办公室电脑3、远程打印需要一台有公网IP的服务器,如果没有,可以根据实际需求购买不同配置的云服务器,如腾讯云、阿里云、华为云等,例如1核2G1M的腾讯云学生服务器价格在120元/年。
基于
socket
的
PC
局域网
TCP
通信
测试软件
使用Vc6.0编写的
pc
软件服务端程序,基于
socket
的
PC
局域网
TCP
通信
测试软件
Android wifi与电脑
socket
通信
源码实例
android环境中,使用wifi与电脑的
socket
通信
实例,用C++写了电脑端程序,手机做服务端,电脑做客户端;也可以反过来,电脑使用MFC编程作为客户端,原理是,手机建立一个Server
Socket
,并获取自己的ip地址和端口port;然后电脑通过
socket
连接手机的ip:port。电脑上主要使用的是MFC编程,
socket
代码请参见实例。
C#
110,544
社区成员
642,578
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章