【发布时间】:2017-03-07 10:45:01
【问题描述】:
我正在使用SwiftSocket 将 TCP 消息从我的 iPad 发送到本地设备。
第一条消息被正确接收,但当我尝试发送另一条消息时,我收到connectionTimeout 错误。
有什么想法吗?
Swift 3 代码:
func sendMessage(_ message: String) {
self.client = TCPClient(address: "192.168.0.16", port: 7777)
switch self.client.connect(timeout: 1) {
case .success:
switch self.client.send(string: "\(message)\n") {
case .success:
print("success")
case .failure(let error):
print("Sending error: \(error)")
}
case .failure(let error):
print("Connection error: \(error)")
}
}
在 CLI 中收听消息的代码:
nc -l 192.168.0.16 7777
【问题讨论】:
-
通过套接字通信,套接字通常保持打开状态,您可以通过它发送多条消息。我猜另一端仍在监听您创建的第一个连接。我想你想把
connect方法从这里拉出来,并将打开的连接存储在一个属性中。否则每次都需要断开连接,效率不高。 -
@DaveWeston 我怎么没想到这个?这解决了我的问题,非常感谢!
-
@Skoua 嘿!我面临同样的问题,你想分享你的解决方案吗?谢谢!
标签: ios swift tcp network-programming