我正在寻找一个与Windows应用程序通信的iOS应用程序(也由我制造)。过去,我已经创建了一些基本的iOS应用,但我正在寻求与Windows设备通信的细节方面的帮助。
就像“远程鼠标”应用程序的工作方式一样(您可以在其中安装iOS应用程序并下载合作的Windows安装程序,然后再进行交谈),我希望搜索我的应用程序,然后与安装在本地网络。
设计此类应用程序时,是否有框架或推荐的方法?该应用程序本身将简单地中继可用于Windows中安装的程序的信息,作为概念证明,然后稍后将添加其他功能。我主要致力于创建一个工作基础,使iOS应用程序和Windows程序通过LAN发言。
答案 0 :(得分:0)
我已经实现了一些与您使用TCP套接字描述的内容类似的东西。套接字是原始字节流,在两端之间成功建立连接后,套接字可以发送或接收一些字节,没有特定的逻辑规则来定义要发送或接收的内容,这些字节可以表示任何内容,即您必须在代码逻辑中定义要发送和接收的消息的协议或消息结构,以使最后的消息有意义。
以简单协议为例,如果要发送一条消息(该消息可以是字符串,整数或其他任何东西),则发送四个字节,它们代表一个整数,用于指定实际消息的大小(已序列化为字节) ),然后发送实际的消息字节,在另一端,您读取了四个字节,您知道它们代表了实际的消息大小,现在您知道期望的是代表完整消息的特定字节数,因此您将继续读取字节,直到获得所有这些字节以产生有效消息为止。收到消息后,您等待另外四个字节来表示新的消息大小,依此类推。
消息本身可以是任何可序列化的数据类型。大多数编程语言默认情况下都支持序列化原始类型,如果要序列化自定义数据类型,一种选择是使用Swift JSONEncoder编码消息(例如,它是符合Codable协议的结构实例),因此在另一端需要一个JSON字节,然后可以将其解码回原始对象。序列化结构化数据的另一个不错的选择是protobuf。
您可能会看到用C#编写的this class,它与我在此描述的实现类似,有些不同,但是您会明白的。
注意:默认字节顺序(字节序)可能会因平台和编程语言而异,可能是小字节序或大字节序。
CocoaAsyncSocket是一个很好的库,用于处理iOS中的套接字。