我在c#中使用套接字编写了messenger,但我对端口没什么问题。为了清除通信,我必须在路由器上打开端口,我在我的信使中使用。如何解决这个问题?方法是自动打开默认关闭端口吗?
感谢。
答案 0 :(得分:1)
你可以做几件事。
首先是更改应用程序的编程,以便它使用常规http端口(80)进行通信。这样,您的应用就可以在任何地方拨打电话。
或者,您可以使用49152到65535之间的高端口号。(请参阅Assigning TCP/IP Ports for In-House Application Use)。
但是,根据您部署应用程序的位置,所有这些端口很可能都是通过防火墙阻止的;并且都不会解决您的问题
由于防火墙问题,大多数信使类型的应用程序无法直接运行。例如,即使您使用端口80,客户端计算机可能会为传入 TCP请求阻止该端口。
相反,它们通常连接到已知的公共服务器。当一个客户端希望连接到另一个客户端时,服务器将在两个客户端之间路由消息。对此的一个非常简化的看法是:客户端A向客户端B向服务器发送通信请求。客户端B轮询服务器以查找消息,查看消息并在桌面上显示消息。
有很多方法可以保持客户端和服务器之间的TCP连接,以加快通信速度;但那是基础。
当客户确定某些端口打开通信或代理服务器不会干扰流量时,客户端甚至可以直接相互通信。但是,这比这里提供的简单“答案”更先进。