I am new to iOS Swift. I want to develop a socket based server application in Swift, but I get the following error messages:
input: ErrorOccurred: Optional("Error Domain=NSPOSIXErrorDomain Code=61 \"The operation couldn’t be completed. Connection refused\"")
input: ErrorOccurred: Optional("Error Domain=NSPOSIXErrorDomain Code=61 \"The operation couldn’t be completed. Connection refused\"")
Both servers and clients are running on the same computer. What am I doing wrong?
Server:
import Foundation
class Server: NSObject, NSStreamDelegate {
let serverAddress: CFString = "127.0.0.1"
let serverPort: UInt32 = 2005
private var inputStream: NSInputStream!
private var outputStream: NSOutputStream!
func connect() {
print("connecting...")
var readStream: Unmanaged<CFReadStream>?
var writeStream: Unmanaged<CFWriteStream>?
CFStreamCreatePairWithSocketToHost(nil, self.serverAddress, self.serverPort, &readStream, &writeStream)
self.inputStream = readStream!.takeRetainedValue()
self.outputStream = writeStream!.takeRetainedValue()
self.inputStream.delegate = self
self.outputStream.delegate = self
self.inputStream.scheduleInRunLoop(NSRunLoop.currentRunLoop(), forMode: NSDefaultRunLoopMode)
self.outputStream.scheduleInRunLoop(NSRunLoop.currentRunLoop(), forMode: NSDefaultRunLoopMode)
self.inputStream.open()
self.outputStream.open()
}
func stream(stream: NSStream, handleEvent eventCode: NSStreamEvent) {
print("stream event \(stream) \(eventCode)")
switch eventCode {
case NSStreamEvent.ErrorOccurred:
print("input: ErrorOccurred1: \(stream.streamError?.description)")
case NSStreamEvent.OpenCompleted:
print("input: OpenCompleted1")
case NSStreamEvent.HasBytesAvailable:
print("input: HasBytesAvailable1")
default:
break
}
let bufferSize = 1024
var buffer = Array<UInt8>(count: bufferSize, repeatedValue: 0)
let bytesRead = self.inputStream.read(&buffer, maxLength: bufferSize)
if bytesRead >= 0 {
let output = NSString(bytes: &buffer, length: bytesRead, encoding: NSUTF8StringEncoding)
print("==================== stream event \(output)")
} else {
}
}
}
let server = Server()
server.connect()
let now:NSDate = NSDate()
let until:NSDate = now.dateByAddingTimeInterval(120)
NSRunLoop.currentRunLoop().runUntilDate(until)
source
share