在C#中建立P2P连接

IAE*_*IAE 5 c# networking p2p

我意识到这个问题是相似 一些 ,但我想我的情况十分不同,以保证其自身的问题(希望).

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

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

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

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

更新:

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

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

mat*_*per 5

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

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

TcpListener server = new TcpListener(IPAddress.Parse("127.0.0.1"), 5001); 
Run Code Online (Sandbox Code Playgroud)

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

TcpListener server = new TcpListener(5001);
Run Code Online (Sandbox Code Playgroud)

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

我的答案背后的推理:

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

NetworkStream stream = client.GetStream( );
StreamWriter writer = new StreamWriter(stream);
Run Code Online (Sandbox Code Playgroud)

  • 传输大文件有限制吗? (2认同)