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

时间:2014-09-15 10:41:38

标签: c# sockets

我想将数据从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.175使用本地局域网连接到Internet的计算机。那么我可以使用socket连接电脑吗?或者是否有任何技术可以连接两台计算机?

提前致谢。

1 个答案:

答案 0 :(得分:-1)

是的,当然可以

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

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

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

如果您始终知道其他计算机的IP

,这很好

否则,我建议使用将连接它们的服务器