1

过去甚至现在有很多程序都是在服务器/客户端的基础上运行的。示例包括 TeamSpeak、Ventrilo、Mumble 等。这些程序通常需要进入路由器并转发端口,以便运行服务器的计算机可以从正在向服务器路由器发送连接请求的客户端获取消息。

这些天在 WCF 中有什么东西可以让你防止这种事情发生吗?我有一个聊天/文件传输程序,我真的希望用户不必知道如何转发他们的端口。

UPnP 或 Punchthrough 有哪些选择?必须通过并转发程序使用的所有特定端口的概念似乎已经过时了。

4

1 回答 1

1

看看 WS-Discovery 与 WCF:

http://weblogs.asp.net/gsusx/archive/2009/02/13/using-ws-discovery-in-wcf-4-0.aspx

正如您所说,发现协议否定了中央“服务器路由器”。它使用 UDP 广播来通知客户端。

请注意,发现协议本身只是一个无状态消息传递协议。它没有保证或状态同步。例如,如果客户端 A 没有收到客户端 B 的广播消息,那么客户端 A 不会知道客户端 B。维护这种 P2P 状态的协议开销很复杂,通常单个服务器来保持这种状态是最简单的方法。

于 2012-12-26T09:34:51.400 回答