社区
C#
帖子详情
局域网内的PC如何实现互联网间SOCKET通信
WWWFIND
2009-12-21 03:16:35
不同局域网内的两台PC,分别通过路由器防火墙连接到INTERNET,如何实现这两台PC间的TCP或者UDP通信?
而不必手动设置路由器和防火墙。
...全文
933
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
编程实例
实现
功能: 1. 客户端(android端) 与 服务器端(
PC
端)
通信
2. 客户端(android端)之
间
通信
提示:在同一网段下。地址需要从新设置。
基于
socket
的
PC
局域网
TCP
通信
测试软件
使用Vc6.0编写的
pc
软件服务端程序,基于
socket
的
PC
局域网
TCP
通信
测试软件
基于HP-
Socket
的
局域网
通信
工具(仿QQ)
基于HP-Scoket开发的
局域网
聊天工具,仿QQ登陆以及聊天,已
实现
登陆验证,注册,好友聊天等功能,内置测试账号1001,1002,1003,1004,密码默认为1
树莓派与
PC
端在
局域网
内运用python
实现
即时通讯
电脑和树莓派在同一
局域网
内,先在电脑和树莓派创建python运行环境,然后在树莓派中用python运行rpi.py;在电脑上运行computer.py;电脑上输入字符即可在树莓派上即时显示! rpi.py #coding:utf-8 #import necessary package import
socket
import time import sys HOST_IP = 192.168.31.151 #树莓派的IP地址 HOST_PORT = 8888 print(Starting
socket
: TCP...) #1.create
socket
object:
socket
=s
局域网
内Android与
PC
平台剪贴板同步功能的
实现
.pdf
局域网
内Android与
PC
平台剪贴板同步功能的
实现
.pdf
C#
111,097
社区成员
642,554
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章