如何使用C#中的套接字连接互联网上的两台计算机

问题描述 投票:0回答:1

我想将数据从 PC-01 发送到 PC-B,两台连接互联网的计算机。可以用c#写socket程序吗?我尝试搜索很多,大多数示例都在本地计算机上或使用静态 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 端的其他用户共享),也不仅仅是使用本地 LAN 通过 49.202.72.175 连接到互联网的计算机。那么我可以使用socket连接电脑吗?或者有什么技术可以连接两台电脑吗?

提前致谢。

c# sockets
1个回答
0
投票

是的,当然可以

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

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

此外,您的防火墙可能阻止了此端口。您可以将端口更改为 80(通常是开放的),或者在所有涉及的防火墙中设置扩展

如果您始终知道另一台计算机的 IP,这很好

否则,我建议使用可以在它们之间连接的服务器

© www.soinside.com 2019 - 2024. All rights reserved.