如何使用C#中的套接字在Internet上连接两台计算机

本文关键字:连接 计算机 两台 Internet 何使用 套接字 | 更新日期: 2023-09-27 18:21:57

我想把数据从PC-01发送到PC-B,这是两台连接在互联网上的计算机。可以用c#编写套接字程序吗?我尝试搜索很多,所有的大多数例子都在本地计算机上或使用静态ip地址。

计算机1->互联网服务提供商(IP:116.203.188.231)->宽带路由器->PC-01/PC-02

计算机2->互联网服务提供商(IP地址:49.202.72.175)->宽带路由器->PC-A/PC-B

我试试这个:

服务器上:

m_socListener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint ipLocal = new IPEndPoint(IPAddress.Any, 8000);
m_socListener.Bind(ipLocal);
m_socListener.Listen(4);
m_socListener.BeginAccept(new AsyncCallback(OnClientConnect), null);

客户端:

m_socClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPAddress ip = IPAddress.Parse(49.202.72.175);
int iPortNo = System.Convert.ToInt32(8000);
IPEndPoint ipEnd = new IPEndPoint(ip.Address, iPortNo);
m_socClient.Connect(ipEnd);
EnableCommands(false);
//watching for data

上面的代码没有问题,但它不起作用。当尝试连接时,它会说"由于目标机器主动拒绝,无法进行连接"。

我检查了防火墙并允许应用程序&两个系统的端口。

连接计算机IP为:116.203.188.231,另一台计算机IP为49.202.72.175。IP 49.202.72.175由ISP提供(它不是静态IP,也可以由ISP端的其他用户共享),并且还不止是使用本地局域网通过49.202.72.1175连接到互联网的计算机。那么我可以用插座连接电脑吗?或者有什么技术可以连接两台电脑吗?

提前谢谢。

如何使用C#中的套接字在Internet上连接两台计算机

是的,当然你可以

如果你想通过套接字发送,你可以在这里看到一个例子:

http://code.msdn.microsoft.com/windowsdesktop/Communication-through-91a2582b

此外,你的防火墙可能正在阻止这个端口。你可以将端口更改为80,它通常是打开的,或者在所有涉及的防火墙中设置一个exeption

如果你总是知道另一台计算机的ip,这很好

否则,我建议使用一个将在它们之间连接的服务器