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()
inputStream!.delegate = self
outputStream!.delegate = self
inputStream.open()
outputStream.open()
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)
...
}
}
, runloop.