我已经尝试了好几天试图解决这个问题。今天是另一天充满了尝试的事情,让我的最新尝试以失败告终。而不是只是关闭它,然后去思考'另一天只是没有做到这一件事。',我想我会在这里问。我现在已经知道了。 CocoaAsyncSocket我无法工作,也没有任何教程或我找到的其他“解决方案”。这就是我想要做的事情:
用户从列表中选择要连接的wifi网络上的计算机或iphone,该应用程序也在运行。它们连接,按下另一个按钮,数据从第一个设备发送到第二个设备。第二个设备也可以发回东西。这是一个点对点网络。
艾米帮助任何人都可以给我表示赞赏。我真的只需要一个简单的方法来做到这一点,因为它开始不值得使用它的数量与实现它需要多长时间。但是我不想放弃这样的事情,我已经在很多场合看过终点线但却无法克服众多障碍。
答案 0 :(得分:5)
您的问题实际上有三个部分:
在低级别,您可以使用TCP / IP连接传输数据(您在主机A的某个端口上侦听并从主机B连接到该主机)。但是,主机B需要了解主机A在同一本地网络上的事实 - 这通常由主机A在本地网络上发送广播消息(比方说通过UDP)来识别它,以便主机B可以确定A的IP地址,因此可以连接到它。最后,在非Mac设备上,您可能只想在检测到设备在WiFi网络上时启动所有这一切,因为否则无法正常工作。
实现上述所有方法(数据传输除外)并不是一件容易的事,但幸运的是Apple为此提供了多种工具:SCNetworkReachability
提供了一个API,可在设备加入Wifi网络时通知您(仅限iOS,在Mac OS X上不需要)。然后可以使用Bonjour实现服务广告和发现:您在一个主机上使用NSNetService
注册自己的服务,另一个可以调用NSNetServiceBrowser
来浏览本地网络以获取可用的对等体。最后,您可以在发现所需服务后使用流来传输数据。看看Apple文档 - 有所有提到的设施的示例代码。我不会打电话很简单,但这是因为你想要的在技术上不是很简单;)。