CocoaAsyncSocket服务器如果从另一个类调用,则无法启动



这是一个简单的套接字服务器。

如果我删除Socket类并serverSocket变量和startSocketServer函数放入ViewController类中,套接字服务器将开始侦听。

我通过lsof -i :6000命令检查以确定套接字是否开始侦听。

怎么了?!

import UIKit
import CocoaAsyncSocket
class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        let server = Socket()
        server.startSocketServer()
    }
}
class Socket: NSObject, GCDAsyncSocketDelegate {
    var serverSocket = GCDAsyncSocket()
    /// Staring socket server
    func startSocketServer() {
        self.serverSocket = GCDAsyncSocket(delegate: self, delegateQueue: dispatch_get_main_queue())
        do {
             try serverSocket.acceptOnInterface(nil, port: 6000)
        } catch {
            print("Port access failed")
        }
    }
}

我找到了解决方案:

我把套接字类定义:let server = Socket() viewDidLoad函数解决了我的问题。

class ViewController: UIViewController {
    let server = Socket()
    override func viewDidLoad() {
        super.viewDidLoad()
        server.startSocketServer()
    }
}

最新更新