Actionscript 3 socket服务器开发中处理公共/私有ip的一般问题

Actionscript 3 socket服务器开发中处理公共/私有ip的一般问题,actionscript-3,tcp,ip,Actionscript 3,Tcp,Ip,这是一个一般性问题,因此没有具体的编程语言 我正在开发一个聊天服务器,我的用户使用我的任何客户端应用程序登录,并使用非常简单的TCP协议实现 当用户登录时,客户端向服务器发送一个原始文本,指示一些参数,如用户名,其他参数,以及最重要的WAN ip。此数据存储在服务器数据库中。在数据库中搜索其他在线用户的算法执行后,服务器向一对用户发送另一个用户的ip和用户名,以便以后客户端可以直接相互连接,不再使用服务器 因此,服务器的作用就像一个交汇点。好的,所有这些工作都很好,因为用户不在私有网络内,就像无

这是一个一般性问题,因此没有具体的编程语言

我正在开发一个聊天服务器,我的用户使用我的任何客户端应用程序登录,并使用非常简单的TCP协议实现

当用户登录时,客户端向服务器发送一个原始文本,指示一些参数,如用户名,其他参数,以及最重要的WAN ip。此数据存储在服务器数据库中。在数据库中搜索其他在线用户的算法执行后,服务器向一对用户发送另一个用户的ip和用户名,以便以后客户端可以直接相互连接,不再使用服务器

因此,服务器的作用就像一个交汇点。好的,所有这些工作都很好,因为用户不在私有网络内,就像无线路由器一样。我真的不知道如何解决这个问题,所以你们能给予的任何帮助都将不胜感激。对我的英语很抱歉


如果这有帮助的话,客户端使用XMLSocket在AS3中编程,服务器使用VB6和winsock。

客户端不需要发送自己的WAN地址。服务器可以从连接中查询它。例如,请参阅Win32文档中的函数。我查找了VB6 Winsock Accept函数,它似乎没有公开相同的功能,但在VB6中可能有另一种方法来实现。我知道的所有语言都有。

看起来Winsock对象的
RemoteHostIP
属性就是这个的接口。你没有遇到问题,问题不是如何获得wan ip,问题是如何处理使用路由器连接的客户端,因为即使你有客户端的wan ip,您以后不能直接将数据发送到该ip,因为它不是客户端的ip,而是路由器。客户端的地址是私有的。每个拥有路由器的人都可以拥有相同的IP。路由器将其路由到客户端。当客户机连接到您的服务器时,TCP会建立连接,您可以通过该客户机套接字进行接收和发送。TCP和路由器处理其余部分。如果客户端必须接受传入连接(即服务器本身),则客户端必须配置其路由器以接受传入连接并将其转发到其专用内部服务器。