在C#中建立P2P连接

时间:2011-08-18 15:38:53

标签: c# networking p2p

我意识到这个问题类似于to some others,但我认为我的情况完全不同以保证自己的问题(希望如此)。

我正在计划在另一个人的计算机上部署一个程序,该程序将打开与我的计算机的连接,之后,我假设,计算机应该能够相互通信。一旦程序启动,它应该能够提取地址信息和端口(如果它们没有被阻止)来创建连接,对吧?

更重要的是我居住的宿舍的互联网配置。每个房间都分配了一个唯一的端口和DHCP服务器分配的静态IP地址。如何将其纳入我的程序设计?

我认为此设置不需要服务器作为中间访问点,因为我的地址详细信息将始终保持不变,主机只需连接到我的计算机而无需进一步信息。它是否正确?

最后,我正在阅读一些关于创建连接的页面,但是我对TcpConnection,WCF,CORBA等的所有可能性感到困惑。对于我来说,哪一个实际上对我来说最简单的假设我只想要发送消息到另一台机器?

更新

地址是静态的,因为它不会改变。我的IP地址格式为130.83.20.xxx,我可以等待DHCP服务器为我分配这个地址,或者我可以使用静态IP配置自己手动输入。

对于消息本身,简单的文本消息就足够了。之前提到的端口是交换机端口,我认为在网络编程期间不会发挥作用。

1 个答案:

答案 0 :(得分:5)

我会选择TcpClientTcpListener。查看MSDN上的示例代码,将其复制并粘贴到两个C#控制台项目中并构建它们。

我会在端口5001(一个常用的测试端口)上使用127.0.0.1(localhost)进行测试。

TcpListener server = new TcpListener(IPAddress.Parse("127.0.0.1"), 5001); 

然后,您应该能够测试仅在您的计算机上运行的简单客户端/服务器。一旦你开始工作,你可以将客户带到你宿舍的另一台电脑,并确保它仍然有效。一旦有效,您可以去当地的咖啡馆带上客户。让服务器在宿舍中的已知IP地址运行。在这种情况下,让服务器绑定到您的实际外部IP(而不是localhost)。您可以通过指定TcpListener构造函数的端口来执行此操作:`

TcpListener server = new TcpListener(5001);

一旦你自己或与朋友一起工作,然后将其发送到外部。在将这些内容发送给您的客户并让他与您进行故障排除之前,最好让这些内容在演示中运行。 :)

我的答案背后推理:

简单的TCP客户端/服务器非常简单,允许在两台计算机之间进行简单的聊天程序。然后你可以加强它发送你想要的任何数据流。您可以添加这样的代码来访问StreamWriter:

NetworkStream stream = client.GetStream( );
StreamWriter writer = new StreamWriter(stream);