我正在尝试为学校作业制作一个简单的聊天客户端应用程序。
但是,数据包被路由器阻止。有人建议我使用 UPNP 转发端口,但我认为由于安全问题我不能使用这样的程序。
是否有任何替代 UPNP 用于端口转发的替代方案,可以在学校环境中使用,如果我使用 UDP 而不是 TCP,我仍然需要转发端口。
最后,我只想通过互联网实现简单的消息传输。
ADD:我忘了提到我作为项目的约束,我不能使用任何非微软的东西。
我正在尝试为学校作业制作一个简单的聊天客户端应用程序。
但是,数据包被路由器阻止。有人建议我使用 UPNP 转发端口,但我认为由于安全问题我不能使用这样的程序。
是否有任何替代 UPNP 用于端口转发的替代方案,可以在学校环境中使用,如果我使用 UDP 而不是 TCP,我仍然需要转发端口。
最后,我只想通过互联网实现简单的消息传输。
ADD:我忘了提到我作为项目的约束,我不能使用任何非微软的东西。
端口转发与 C# 或 .NET 无关 - 它是路由器的一项功能,可通过特定端口将外部连接转发到网络上的内部地址。
端口转发通常是 TCP/ip 套接字(远程处理)的问题。Web 服务通常不是问题,它们使用标准协议并通过浏览器使用的端口 80。
如果端口转发是一个问题,也许您应该从 TCP/IP 切换到 WebServices 以获取您的通信解决方案。
在 MSNMessager 和 Skype 等应用程序中,您有两个应用程序正在运行。第一个是您在本地计算机上运行的客户端,第二个是在提供商网络上运行的服务器。大多数防火墙仅阻止入站连接请求并允许所有出站请求未经过滤。这并不总是正确的,但在大多数情况下确实如此。客户端应用程序将创建出站到服务器的连接,因此不受防火墙限制。
MSNMessager 不直接连接到另一个客户端,而是由服务器应用程序处理和转发。一旦通过 TCP 连接,您将保持连接,直到您决定断开连接。一旦连接,就可以在客户端和它所连接的服务器之间进行双向通信。
我希望这有帮助
如果您完全在机器本地,通常不会通过防火墙,所以这应该不是问题。如果您需要与不同的机器交谈,您的网络管理员可能需要在防火墙上为您打开一个洞。与您的老师讨论该问题;也许已经为此目的打开了一个端口,或者他不希望您首先需要绕过防火墙。
如果问题基本上是“我如何绕过学校的防火墙”,那么我的答案将是“不要”。那将是一个恶意应用程序。