创建一个可以通过互联网连接工作的网络应用程序



几年前,我在大学学习网络课程,对网络编程(以及一般的网络概念)有了一些基本的了解。

我记得我能够创建一个简单的聊天应用程序,聊天服务器被用作中心目录,可以知道哪些客户端当前在线,但一旦客户端知道要与之聊天的另一个客户端,它们之间的实际消息就不需要通过服务器。我记得我们只能在一堆局域网机器上测试这个。

这个C#聊天程序也有一些评论提到该程序不能在互联网上运行:http://www.geekpedia.com/tutorial239_Csharp-Chat-Part-1---Building-the-Chat-Client.html

我的问题是,为什么这些应用程序不能在互联网上工作,而"商业"聊天应用程序可以。当然,有一些方法可以让我的计算机访问外部网络,即使它的IP地址在ISP的网络之外无效。

我认为链接到的代码没有问题。服务器甚至不绑定到本地地址,这意味着它将侦听计算机上所有ip地址的连接。然而,在服务器文章中有一条注释,用户将TcpListener对象创建更改为绑定到特定地址,这意味着客户端只能连接到该特定地址。

在最初的服务器设计中,使用只有端口号的TcpListenet,除非有防火墙阻止访问,否则不应该有任何东西阻止它在连接Internet的计算机上使用。

您知道networkComms.net吗,尤其是演示此处功能的短聊天示例(不到15行代码)?这是专门为用c#编写服务器客户端应用程序的人编写的,考虑到你可能遇到的大多数问题都已经解决了,这可能会为你节省一些时间。这个库完全是plug&播放,在互联网上工作没有问题(只要你可以在必要时设置必要的端口转发)。

一般来说,如果你的两个目标都在NAT后面(所以没有真正的外部ip地址),并且你无法配置端口转发,你需要考虑"TCP/UDP打孔",这是一种非常先进的技术。

最新更新