如何使用套接字编程将iOS Swift应用程序连接到硬件设备?

如何使用套接字编程将iOS Swift应用程序连接到硬件设备?,ios,swift,sockets,tcp,socket.io,Ios,Swift,Sockets,Tcp,Socket.io,我想使用套接字编程将我的Swift应用程序连接到网络硬件设备。服务器端编程已经使用C语言在硬件设备中完成。如何使用套接字编程与设备连接和通信?我应该选择哪个库?如果您想自己进行套接字联网,可以从Swift使用NSStream和CFStream API连接/读取/写入原始网络套接字 以下是一些通过NSStream使用套接字的有用Swift 3代码段: var readStream: Unmanaged<CFReadStream>? var writeStream: Unmanaged

我想使用套接字编程将我的Swift应用程序连接到网络硬件设备。服务器端编程已经使用C语言在硬件设备中完成。如何使用套接字编程与设备连接和通信?我应该选择哪个库?

如果您想自己进行套接字联网,可以从Swift使用NSStream和CFStream API连接/读取/写入原始网络套接字

以下是一些通过NSStream使用套接字的有用Swift 3代码段:

var readStream:  Unmanaged<CFReadStream>?
var writeStream: Unmanaged<CFWriteStream>?
var inputStream   : InputStream?    =  nil
var outputStream  : OutputStream?   =  nil

let host : CFString = NSString(string: someHostIPString)
let port : UInt32   = UInt32(somePortNumber)

CFStreamCreatePairWithSocketToHost(kCFAllocatorDefault,
                                       host,
                                       port,
                                       &readStream,
                                       &writeStream)

inputStream  = readStream!.takeUnretainedValue()
outputStream = writeStream!.takeUnretainedValue()

// the enclosing class should be a StreamDelegate
//   to handle stream open, events, or errors, etc.
inputStream!.delegate   = self
outputStream!.delegate  = self

inputStream.open()
outputStream.open()

// the NSStream delegate callback(s)
func stream(_ aStream: Stream, handle eventCode: Stream.Event) {
    var n = 0
    switch (eventCode) {
    ...
    case Stream.Event.hasSpaceAvailable:
    n = self.outputStream.write(someWriteBuffer, maxLength: dataLength) 
    ...
    case Stream.Event.hasBytesAvailable:
    n = self.inputStream.read(someReadBuffer, maxLength: bufferLength)
    ...
    // etc.
    }
}

// etc.
var readStream:非托管?
var writeStream:非托管?
var inputStream:inputStream?=无
var outputStream:outputStream?=无
let host:CFString=NSString(字符串:someHostIPString)
let端口:UInt32=UInt32(somePortNumber)
CFStreamCreatePairWithSocketToHost(kCFAllocatorDefault,
主办
港口,
&读流,
&writeStream)
inputStream=readStream!。takeUnretainedValue()
outputStream=writeStream!。takeUnretainedValue()
//封闭类应该是StreamDelegate
//处理流打开、事件或错误等。
输入流!。代表=自我
outputStream!。代表=自我
inputStream.open()
outputStream.open()
//NSStream委托回调(个)
func stream(aStream:stream,句柄事件代码:stream.Event){
var n=0
开关(事件代码){
...
case Stream.Event.hasspace可用:
n=self.outputStream.write(someWriteBuffer,maxLength:dataLength)
...
case Stream.Event.hasbytes可用:
n=self.inputStream.read(someReadBuffer,maxLength:bufferLength)
...
//等等。
}
}
//等等。

您可能希望在自己的线程中使用自己的runloop运行上述代码。

很抱歉,我不太理解您的答案,因为我是新手。我正在寻找一些可以用来使用套接字编程与设备通信的库。上面的代码片段展示了如何打开、读取和写入套接字(通过Swift中的委托回调)。您是否需要其他形式的套接字通信?