gpt4 book ai didi

c# - Internet 上的客户端-服务器应用程序消息交换

转载 作者:行者123 更新时间:2023-11-30 19:25:58 24 4
gpt4 key购买 nike

我有一个基于 Windows 的应用程序,它可以做一些工作。

我想制作一个 iOS 应用程序,它可以通过 Internet 将消息发送到目标计算机上运行的特定应用程序。

所以,我的问题是如何在不指定 IP 地址和端口的情况下绑定(bind)我的 iOS 客户端和 Windows 服务器应用程序,仅使用某种类似于 Team Viewer 中的 key ,例如:服务器应用程序设置了 key 和密码,并且来自另一个网络的客户端应用程序可以使用匹配的 key 和正确的密码连接到服务器应用程序。

我不需要共享屏幕或其他东西,只想发送/获取二进制消息。

有没有一种方法可以在不使用某些类型的网络服务的情况下连接应用程序?

或者使用 Web 服务只是为客户端和服务器应用程序建立连接而不是控制消息队列?

最佳答案

我相信您需要的是服务器应用程序和 iOS 应用程序之间的点对点通信 channel ,这里的主要问题是您需要在这两个设备之间遍历 NAT。

有多种方法可以实现,UDP Hole Punching就是其中一种,实现简单,NAT穿越成功率高。

enter image description here

要使用此方法建立连接,您基本上需要三个组件:

Peer:传统的 UDP 客户端/服务器,它与您在 LAN 上运行的 UDP 应用程序相同。

STUN 服务器:用于通过网络地址转换器 (NAT) 简单遍历用户数据报协议(protocol) (UDP) 的服务器。它只是帮助您将本地计算机地址映射到公共(public)地址。

您不需要自己编写或部署,有几个 STUN 服务器可供公众使用,203.183.172.196:3478 (s1.taraba.net) 就是其中之一 (如果您需要部署自己的实现,也有一些开源实现,例如 http://sourceforge.net/projects/stun/)

公共(public) STUN 服务器的编译列表: https://gist.github.com/zziuni/3741933

下面是 STUN Client 的简单实现,并有很好的解释: http://www.codeproject.com/Articles/18492/STUN-Client

Rendezvous Server:一个简单的公共(public)服务器,它拥有所有在线对等点的公共(public)地址。

沟通步骤:

公告

1- Peer 从 STUN 服务器查询自身以找到它的公共(public) IP:端口地址。

2- Peer 向 Rendezvous Server 宣布自己,并设置其通信状态。

3- Peer 应定期更新其状态和公共(public)地址。

连接

1- 应用程序将从 Rendezvous Server 中找到目标 Peer 的公共(public)地址(基于 ID/Token,...)

2- 应用程序将与提供的公共(public) IP:Port 地址建立 UDP 连接,与传统 LAN UDP 通信相同。

3- 应用程序应检查 Rendezvous Server 以更新目标对等公共(public)地址/状态。

注意:UDP 打洞不适用于所有 NAT 组合,在这种情况下,您应该使用中继服务器 来建立连接,它本质上是一个链接在彼此看不到的梨之间(它们的 NAT 被阻止)

我建议你看看http://www.brynosaurus.com/pub/net/p2pnat/有关通过 NAT 进行点对点通信的更多信息。

关于c# - Internet 上的客户端-服务器应用程序消息交换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25855404/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com