Ser*_*nov 2 c# sockets networking objective-c stream
我有一个基于Windows的应用程序,可以做某种工作.
我想创建一个iOS应用程序,可以通过Internet将消息发送到目标计算机上运行的特定应用程序.
所以,我的问题是如何绑定我的iOS客户端和Windows服务器应用程序而不指定IP地址和端口,只需使用类似于Team Viewer中的某种键,例如:服务器应用程序具有密钥和密码集以及客户端应用程序来自另一个网络可以使用匹配的密钥和正确的密码连接到服
我不需要共享屏幕或其他东西,只想发送/获取二进制消息.
有没有办法连接应用程序而不使用某些类型的Web服务?
或者使用Web服务只是为客户端和服务器应用程序建立连接而不是控制消息队列?
我相信你需要的是服务器应用程序和iOS之间的点对点通信通道,这里的主要问题是你需要遍历这两个设备之间的NAT.
有几种方法可以实现这一点,UDP Hole Punching就是其中之一,易于实现,并且在NAT遍历中具有很高的成功率.
要与此方法建立连接,您基本上需要三个组件:
对等:传统的UDP客户端/服务器,它与在LAN上运行的UDP应用程序相同.
STUN服务器:通过网络地址转换器(NAT)简单遍历用户数据协议(UDP)的服务器.它只是帮助您将本地计算机地址映射到公共计算机地址.
您不需要编写或部署自己的,有几个STUN服务器可供公众使用,203.183.172.196:3478 (s1.taraba.net)是其中之一(如果您需要部署自己的,还有一些开源实现,例如http://sourceforge.net/ projects/stun /).
公共STUN服务器的编译列表:https: //gist.github.com/zziuni/3741933
这是一个简单的STUN Client实现,有一个很好的解释:http: //www.codeproject.com/Articles/18492/STUN-Client
Rendezvous Server:一个简单的公共服务器,它为所有在线对等体保存公共地址.
沟通步骤:
公告
1- Peer从STUN Server查询自身,找到它的公共IP:端口地址.
2- Peer向Rendezvous Server宣布自己,并设置它的通信状态.
3- A Peer应定期更新其州和公共地址.
连接
1-应用程序将从Rendezvous Server找到目标对等方的公共地址(基于ID/Token,...)
2-应用程序将与提供的公共IP建立UDP连接:端口地址与传统LAN UDP通信相同.
3-应用程序应检查Rendezvous Server以更新目标对等方公共地址/状态.
注意:UDP Hole打孔不适用于所有NAT组合,在这种情况下,您应该使用中继服务器建立连接,它实际上是作为彼此无法看到的梨之间的链接(其NAT被阻止)
我建议您查看http://www.brynosaurus.com/pub/net/p2pnat/,了解有关通过NAT进行对等通信的更多信息.