充当局域网外部的服务器
Acting as a server outside LAN
>我目前正在编写一个点对点聊天应用程序来在世界各地聊天,但我的问题是我无法连接到 LAN 之外的另一台计算机,因为尽管我有我朋友的公共 IP 地址,如有必要,我可以获取他们的私人 IP 地址,我如何连接到他们的 PC,因为公共 IP 地址是路由器的地址, 不是计算机的地址,我只能指定一个地址(公共或私有(。那么,如何在不进行设置的情况下将消息发送到特定的计算机而不是路由器呢?我知道这是可能的,因为否则,如果您请求网页,则局域网中的所有计算机都可以获取您的私人信息(在有线方案中,因为在Wi-Fi中显然是可能的(。任何帮助将不胜感激,对不起我的英语:D差。
有两种可能性:
1 在这里阅读: http://en.wikipedia.org/wiki/STUN
2 选择IPv6! ;-(
实际上,路由器另一端的计算机的私有IP地址对您没有帮助。在这些情况下,如果他们启动与您的连接,那么您很好,因为您可以在该连接上做出响应。
如果要启动与它们的连接,则必须将其连接到其公共 IP 地址,并且必须将路由器配置为将入站请求(在任何端口上(映射到其网络中的正确 IP 地址。
首先,您需要确保您尝试连接的计算机正在侦听特定端口(与您尝试连接到的端口相同(。
您还需要配置您的朋友路由器,以便他们将该端口上的所有请求转发到您朋友的计算机。如果您无法访问路由器,最好使用不在任何路由器后面的计算机作为聊天服务器。
理想的解决方案是使用 uPNP。这允许您的应用程序与当前网络上的路由器通信,并要求它们将相应的消息转发给您。然后,这会在防火墙上形成一个洞,允许你的应用(在另一台电脑上(进行连接。
假设两个应用程序都执行此操作,则任何一端都可以启动连接。如果只有一端有应用程序,那么另一端必须启动连接。
想象一下,如果互联网上的每个人都可以向任何人发送消息会发生什么 - 没有预装软件......
- "unknown ca"自生成的 CA、证书和客户端/服务器
- 当我编译webrtc服务器时,Windows上只支持clang-cl
- 在函数内部的声明中初始化数组,并在外部使用它
- 使外部项目可用于find_package CMake
- 如何通过套接字将文本文件的内容从服务器发送到客户端
- C++:Application.cpp中抛出了未解析的外部符号(解决方案在问题的末尾,供未来的读者参考)
- 使用外部SDK工具链文件在VisualStudio上生成项目编译错误
- C++:来自外部文件的Trivia
- 从函数角度看ID到文件路径的内部与外部映射
- C++:将外部库链接到dll库
- spdlog标头仅与外部fmt一起使用.spdlog错误:'内部':不是'fmt'
- 有没有办法知道Tracer是否成功地完全连接到了jaegerclientcpp中的jaeger后端服务器
- 节俭并发:未解决的外部问题
- 如何在c++中从git建立外部库
- 从服务器传输到客户端的消息不会出现
- 未解析的外部符号_MsiLocateComponentW@12.
- 如何使用对C函数和类对象的外部调用来处理C++头文件
- QTcpSocket在不阻塞GUI的情况下重新连接到服务器
- 未解析的外部符号 CORBA 服务器
- 充当局域网外部的服务器