C#app如何轻松地与位于同一网络上的另一台计算机上的自身实例进行通信,并传输文件和数据?
假设网络上的计算机具有固定的本地IP地址,并且每个计算机都知道彼此的IP.如果IP未知,是否还有通信方式?基于一些发现协议?
我听说Apple的“Bonjour”服务是一个很好的协议.我们可以通过Windows应用程序进行通信吗?或者你必须使用“套接字”.我主要是在寻找可以轻松满足我需求的库或示例代码,我不想开发自己的基于TCP的协议或任何硬核!
解决方法
对于传输文件/数据,您可以使用
TcpClient/
TcpListener类,这是对grittier套接字功能的很好的抽象.或者,您可以使用
HttpListener类将应用程序简单地作为HTTP服务器,如果这对您的应用程序更容易/更合适.
对于发现,如果您能够拥有中央服务器;那么你可以让每个客户端在启动时连接到服务器,注册自己并检索其他在线客户端及其IP的列表.然后可以在客户端之间直接进行后续通信.
这种方案的一个变体是让中央服务器充当代理,客户端之间的所有流量都流过.如果客户端不在同一网络上,那么这对克服防火墙或路由问题大多有帮助(因此,您的方案可能不需要它).