我想打开一个基于ELM327芯片的OBD加密狗的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)永远都不会跑。
问题出在哪里?
谁能建议我如何发送和接收文字字节串。
谢谢
发布于 2016-05-11 09:45:01
我也遇到了一个问题,我像下面这样解决了它。
你必须让类继承自NSObject。
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")
}
}下面的链接可以帮助你。
发布于 2017-05-17 05:39:25
仅供参考,如果其他任何人遇到didConnectToHost没有被调用的问题,并且似乎已经尝试了其他方法:我意识到我正在AppDelegate中初始化我的套接字服务类。当我将代码移到其他地方时,它工作了,并且回调被调用了。
https://stackoverflow.com/questions/35805299
复制相似问题