macOS swift4 GCDAsyncSocket с синхронизацией и асинхронным режимом - PullRequest
0 голосов
/ 22 февраля 2019

Я собираюсь реализовать синхронизирующий или асинхронный клиент сокетов Swift с GCDAsyncSocket.

Вот пример реализации асинхронного режима с помощью GCDAsyncSocket.

class TestAsyncSocket: NSObject, GCDAsyncSocketDelegate{
    func startSocket(){
        mAsyncSocket = GCDAsyncSocket.init(delegate: self, delegateQueue: DispatchQueue.main)
        do {
            try mAsyncSocket?.connect(toHost: hostURL, onPort: port)
        } catch {
            print("Failed to connect")
        }
    }

    func socket(_ sock: GCDAsyncSocket, didConnectToHost host: String, port: UInt16) {
        print("DidConnectToHost: %@  port: %@", host, port)
    }

    func socketDidDisconnect(_ sock: GCDAsyncSocket, withError err: Error?) {
        print("DisConnect to host: %@", err ?? hostURL)
    }

    func sendData(cmdJson: Data) {
        mAsyncSocket.write(cmdJson, withTimeout: -1, tag: 0)
        mAsyncSocket.readData(withTimeout: -1, tag: 0)
    }

    func socket(_ sock: GCDAsyncSocket, didRead data: Data, withTag tag: Int) {
        let dataString = String.init(data: data, encoding: String.Encoding.utf8)
        print("Received Data on Socket =====>", dataString ?? "")
    }

Некоторые экземпляры сокетов должны работать какрежим синхронизации, но другие должны быть в асинхронном режиме.

Можете ли вы посоветовать, как я могу реализовать оба режима синхронизации и асинхронного?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...