ios - 连接套接字后,GCDAsyncSocket 不会写入
问题描述
在我的 iOS 应用程序中,我使用GCDAsyncSocket
库与运行在另一台 iPad 上的本地服务器进行通信。因此,多台 iPad 在本地相互通信,其中一台充当服务器。
当客户端连接到服务器 iPad 时,会触发以下GCDAsyncSocketDelegate
触发器:
func socket(_ sock: GCDAsyncSocket, didConnectToHost host: String, port: UInt16) {
sock.readData(toLength: UInt(UInt64.byteWidth), withTimeout: -1, tag: 0)
delay(0.1, queue: socket.delegateQueue, closure: { [weak self] in
sock.write(dataToSend, withTimeout: -1, tag: 0)
})
connected = true
}
一旦客户端连接到服务器,它就会将一些数据写入该套接字(服务器),但是,这些数据不会到达服务器。但是,如果我将写入调用包装在延迟函数中,那么数据将到达其目的地。
这是我的延迟功能:
func delay(_ delay: Double, queue: DispatchQueue?, closure: @escaping () -> ()) {
let delayTime = DispatchTime.now() + Double(Int64(delay * Double(NSEC_PER_SEC))) / Double(NSEC_PER_SEC)
let q = queue ?? DispatchQueue.global()
q.asyncAfter(deadline: delayTime) {
closure()
}
}
我在这里缺少什么?
解决方案
推荐阅读
- mql5 - 将整数转换为字符串 MQL5 时省略零
- google-ads-api - 如何获取 Google 广告再营销代码的 Feed ID?
- c# - 如何使用 TFS 客户端库获取 PullRequest 的 Web URL?
- c# - 带有子查询、计数、最大值、总和的 Linq 查询,左连接扩展
- spring - 如何在 Springboot 应用程序中删除 Favicon?
- linux - 与标志 MAP_HUGETLB 相比,hugetlbfs 的优势
- python - 使用 tf.train.Saver() 保存和恢复训练模型时损失值跳跃
- javascript - 如何将本地存储应用到我的 todolist?
- r - 如何在 R 中取消列出数字列表并保留所有空行?
- asp.net - 集线器(在 signalR 中使用的集线器)和远程过程调用(RPC)有什么区别?