如何通过互联网建立套接字连接?

时间:2011-04-13 01:18:56

标签: .net sockets tcp tcpclient tcplistener

我正在制作两个节目; “服务器”应用程序(单个实例)和连接到服务器应用程序的客户端应用程序(多个实例)。在服务器应用程序和客户端应用程序之间发送连续(但轻量级)数据,但客户端应用程序之间没有通信。

到目前为止,我已成功通过本地网络上的计算机之间的开放套接字连接进行测试。这意味着我正在使用cmd中的IP地址> IPCONFIG。服务器应用程序使用TcpListener / TcpClient。我真的不知道这是否是最好的连接,或者是否还有其他(?),但这就是我所学到的。

现在需要通过互联网来完成这项工作?我假设我将连接请求发送到外部IP地址,但是我是否需要对请求进行更复杂的更改?

我是否需要在路由器中进行一些设置?如果是这样,什么类型?

如你所见,任何提示都会受到赞赏,我对此并不熟悉。

3 个答案:

答案 0 :(得分:0)

您可以使用WCF服务而不是套接字。它们具有双工模式和TCP / IP。

然后,您需要一台具有静态IP的计算机,以便您可以通过网络公开您的服务。

查看此文章:http://keithelder.net/2008/01/17/exposing-a-wcf-service-with-multiple-bindings-and-endpoints/

答案 1 :(得分:0)

您可以继续使用套接字。要更轻松地与服务器进行通信,请使用主机名而不是IP地址;这样,服务器可以自由更改IP地址,而无需重新部署客户端。

要考虑的另一个问题是防火墙。您需要确保服务器应用程序的主机允许到它正在侦听的TCP端口的入站连接,并且它后面的任何路由器也允许到该端口的入站流量。此外,如果客户端具有阻止出站流量的防火墙,则可能会出现连接问题。

答案 2 :(得分:0)

您应该在非军事区http://en.wikipedia.org/wiki/DMZ_(computing中托管您的tcp服务器,或者设置您的路由器从外部到服务器进行NAT(端口转发)http://en.wikipedia.org/wiki/Port_forwarding

路由器上的防火墙应该允许连接到所需的端口。

如果你不确定你在设置中做了什么,你应该阅读路由器手册。