Networking 客户机-服务器体系结构
我在为我的应用程序的服务器-客户机方面选择什么技术而挣扎 定义设计Networking 客户机-服务器体系结构,networking,udp,client-server,nat-traversal,Networking,Udp,Client Server,Nat Traversal,我在为我的应用程序的服务器-客户机方面选择什么技术而挣扎 定义设计 Windows,C#on.NET2 在许多机器上都有.NET2服务。我称之为客户 机器可以在NAT后面的不同网络中(或不连接到Internet) 服务器服务是公共的 要求 根据需要与客户沟通 客户端必须侦听传入的连接 服务器可以在线,也可以不在线 无法进行端口转发 我有什么选择去做那样的事情? 现在我在看UDP打孔技术。UDP打孔技术设置和我的设置之间的区别在于,我没有在NAT和中介服务器后面有两个客户机,而是只在NAT
- Windows,C#on.NET2
- 在许多机器上都有.NET2服务。我称之为客户
- 机器可以在NAT后面的不同网络中(或不连接到Internet)
- 服务器服务是公共的
- 根据需要与客户沟通
- 客户端必须侦听传入的连接
- 服务器可以在线,也可以不在线
- 无法进行端口转发
- 当服务看到服务器联机时,使用TCP创建到服务器的连接。问题是我有大约200个客户,而且这个数字还在上升,我担心这是一个资源杀手
- 当服务看到服务器联机时,检查数据库表中的命令,然后每隔30秒再次检查一次。这也是我的服务器的资源杀手
您的服务器应该正在侦听一个特定的端口(您做出这个决定),当它从客户端接收到一个数据包时,数据包的源地址将是某个NAT'ed地址。换句话说,源地址将是您的客户机背后的任何防火墙的公共IP。如果NAT更改了客户端数据包的源端口,服务器会将此NAT端口视为源端口。其实这并不重要,因为当服务器发回响应数据包时,客户端机器上的NAT将转换目标端口(它在内部存储转换),并将数据包正确地发送回正确的专用主机(客户端)。您能否更具体地说明第一个要求。。。“按需与客户端通信。”客户端是否需要相互通信(对等),或者是客户端和服务器之间的唯一通信?如果客户端不需要直接通信(不是p2p),那么这就不是nat穿越问题。只要服务器是公共的,客户端可以访问公共互联网,那么通信就“有效”。感谢您提供的所有有趣的信息。“按需与客户端通信。”“意思是:我不希望客户机和服务器之间一直存在连接。就在我需要的时候。随需应变。因此,我需要通信的服务器部分(UDPServer或TCPServer等)位于NAT后面的客户机上。我真正的服务器将充当一个客户机,在服务器联机且我需要连接时,尝试连接到通信服务器(即在NAT后面的客户机上侦听)。