GCDAsyncSocket在Swift中

我想打开一个基于ELM327芯片的OBDencryption狗的TCP连接。 所以我决定使用GCDAsyncSocket库。 我写了这个代码,

import UIKit import CocoaAsyncSocket class ViewController: UIViewController, GCDAsyncSocketDelegate { let addr = "192.168.0.10" let port:UInt16 = 35000 var socket:GCDAsyncSocket! override func viewDidLoad() { super.viewDidLoad() socket = GCDAsyncSocket(delegate: self, delegateQueue: dispatch_get_main_queue()) do { try socket.connectToHost(addr, onPort: port) } catch let e { print(e) } // Do any additional setup after loading the view, typically from a nib. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } @IBAction func connect(sender: AnyObject) { print("Clicked") } func socket(socket : GCDAsyncSocket, didConnectToHost host:String, port p:UInt16) { print("Connected to \(addr) on port \(port).") } } 

但是当我运行代码时,函数:

 func socket(socket : GCDAsyncSocket, didConnectToHost host:String, port p:UInt16) 

永远不会运行。

哪里有问题?

任何人都可以build议我如何传输和recive文字字节string。

谢谢

我也有一个问题,我像下面解决它。

你必须从NSObjectinheritance类。

 import Foundation import CocoaAsyncSocket public class MySocket: NSObject, AsyncSocketDelegate { var mSocket: AsyncSocket! override init() { super.init() let mSocket = AsyncSocket.init(delegate: self) do { print("Connecing to socket server...") try mSocket.connectToHost("google.com", onPort: 80) } catch let error { print(error) } } @objc public func onSocket(sock: AsyncSocket!, didConnectToHost host: String!, port: UInt16) { print("success") } } 

下面的链接可以帮助你。

在Swift类中实现AsyncSocketcallback

仅供参考,如果其他人遇到didConnectToHost未被调用的问题,似乎已经尝试了其他一切:我意识到我正在初始化我的AppDelegate中的套接字服务类。 当我把代码移到其他地方,它的工作和callback被称为。