Swift使用GCDAsyncSocket创建套接字客户端

时间:2015-12-02 10:20:52

标签: ios swift sockets gcdasyncsocket

如何使用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地址或端口。

为什么呢?什么是创建套接字客户端的正确方法,并使用它来接收/发送数据到服务器?

1 个答案:

答案 0 :(得分:1)

connectToHost返回true,因为连接尝试已成功启动。

建立连接后,将调用委托方法socket:didConnectToHost:port:

来自connectToHost的文档:

  

如果检测到错误,此方法将返回NO,并设置错误   指针(如果给出了一个)。可能的错误是零主机,   无效的接口或套接字已经连接。

     

如果未检测到错误,此方法将启动后台连接   操作并立即返回YES。使用委托回调   在套接字连接时,或者主机是否通知您   不可到达的。