【问题标题】:Swift create socket client with GCDAsyncSocket使用 GCDAsyncSocket Swift 创建套接字客户端
【发布时间】:2015-12-02 10:20:51
【问题描述】:

如何使用 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: 端口, 错误: nil) 总是返回 true。

不管我改了ip地址还是端口都不可用。

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

【问题讨论】:

    标签: ios swift sockets gcdasyncsocket


    【解决方案1】:

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

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

    来自connectToHost的文档:

    如果检测到错误,此方法将返回 NO,并设置错误 指针(如果有的话)。可能的错误是 nil 主机, 无效的接口,或者套接字已经连接。

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

    【讨论】:

      猜你喜欢
      • 2022-08-05
      • 1970-01-01
      • 1970-01-01
      • 2018-03-26
      • 2014-10-28
      • 2019-02-07
      • 2014-12-11
      • 1970-01-01
      • 2012-11-08
      相关资源
      最近更新 更多