C#中的端口转发问题

时间:2012-11-15 16:28:34

标签: c# .net sockets networking network-programming

我正在尝试为学校作业制作一个简单的聊天客户端应用程序。

然而,路由器阻止了数据包。我被建议使用UPNP转发端口,但问题是我认为由于安全问题我不能允许使用这样的程序。

UPNP是否有替代端口转发可以在学校设置中使用,如果我使用UDP而不是TCP,我仍然需要转发端口。

最后,我只想通过互联网实现简单的消息传输。

ADD:我忘了提到我作为项目的约束我不能使用任何非微软。

3 个答案:

答案 0 :(得分:4)

Port Forwarding与C#或.NET无关 - 它是路由器通过特定端口将外部连接转发到网络内部地址的功能。

端口转发通常是TCP / ip套接字(远程处理)的问题。它通常不是webservices的问题,它们使用标准协议并通过浏览器使用的端口80。

如果端口转发是一个问题,您可能应该从TCP / IP切换到Web服务以用于您的通信解决方案。

答案 1 :(得分:3)

在MSNMessager和Skype等应用程序中,您运行了两个应用程序。第一个是您在本地计算机上运行的客户端,第二个是服务器,它在提供程序的网络上运行。大多数防火墙仅阻止入站连接请求,并允许所有出站请求未经过滤。这并非总是如此,但在大多数情况下确实如此。客户端应用程序将创建出站到服务器的连接,因此不受防火墙的限制。

MSNMessager不直接连接到另一个客户端,而是由服务器应用程序处理和转发。通过TCP连接后,您将保持连接状态,直到您决定断开连接。连接后,客户端与其连接的服务器之间可以进行双向通信。

我希望这会有所帮助

答案 2 :(得分:2)

如果你是完全本地的机器,你通常不会通过防火墙,所以它不应该是一个问题。如果您需要与不同的机器通信,您的网络管理员可能需要为您在防火墙中打开一个洞。和老师谈谈这个问题;也许为此目的已经打开了一个端口,或者他可能不希望你首先需要绕过防火墙。

如果问题基本上是“我如何在学校的防火墙周围破解”,那么我的答案就是“不要”。那将是一个恶意的应用程序。