How to connect iOS Swift app to hardware devices using socket programming?

I want to connect my Swift application to a network device using socket programming. Server-side programming is already running on the hardware device using C language. How can I connect and communicate with the device using socket programming? Which library to choose?

+4
source share
1 answer

If you want to create your own network sockets, the NSStream and CFStream APIs can be used from Swift to connect / read / write from / to idle network sockets.

Swift 3 NSStream:

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.

, runloop.

0

Source: https://habr.com/ru/post/1679949/


All Articles