如何使用swift语言使用GCDAsyncSocket创建套接字客户端。 我使用以下代码:
class MySocketClient: GCDAsyncSocketDelegate{
let addr = "192.168.131.218"
let port :UInt16 = 8000
var inp :NSInputStream?
var out :NSOutputStream?
var bsocket: GCDAsyncSocket!
var err :NSError?
func initClient(name: String) ->String{
bsocket = GCDAsyncSocket(delegate: self, delegateQueue: dispatch_get_main_queue())
return "init result:"+name
}
func connect(){
if(!bsocket.connectToHost(addr, onPort: port, error: nil)){
println("Error.")
}else{
println("Connecting...")
}
}
}
但奇怪的是,
的结果bsocket.connectToHost(addr,onPort:port,error:nil) 总是回归真实。
无论我更改了不可用的IP地址或端口。
为什么呢?什么是创建套接字客户端的正确方法,并使用它来接收/发送数据到服务器?
答案 0 :(得分:1)
connectToHost
返回true,因为连接尝试已成功启动。
建立连接后,将调用委托方法socket:didConnectToHost:port:
。
来自connectToHost
的文档:
如果检测到错误,此方法将返回NO,并设置错误 指针(如果给出了一个)。可能的错误是零主机, 无效的接口或套接字已经连接。
如果未检测到错误,此方法将启动后台连接 操作并立即返回YES。使用委托回调 在套接字连接时,或者主机是否通知您 不可到达的。