【发布时间】:2017-05-02 09:08:15
【问题描述】:
我想通过 TCP 在 iPad 和嵌入式设备之间交换数据。 我正在使用 TCP 框架工作 CocoaAsyncSocket。 使用这个我创建了一个客户端和服务器,它们实际上是两个不同的 ipad。
我可以通过将服务器 IP 地址提供给客户端来从客户端连接到服务器,并且在服务器上调用接受新连接的委托。
但我无法将任何数据从客户端写入服务器,我也需要这样做,反之亦然,才能从服务器到客户端进行读写。
已使用以下代码从客户端写入服务器。
//Client side
//For making a connection with server, this is succesfull
func establishSocket() {
do {
try socket!.connect(toHost: "192.168.xx.xxx", onPort: 5007)
}
catch {
print("Could not connect to host")
}
}
//this is to write data to the server.
func writeString(message:String) {
let data = message.data(using: .utf8)
socket?.write(data!, withTimeout: -1, tag: 1)
}
//Server side
//This is called succesfully
func socket(_ sock: GCDAsyncSocket, didAcceptNewSocket newSocket:
GCDAsyncSocket) {
print("Did accept on socket")
setSocketRead()
}
func setSocketRead() {
serverSocket?.readData(to: reaaddata, withTimeout: -1, tag: 1)
}
//This is not getting called
func socket(_ sock: GCDAsyncSocket, didRead data: Data, withTag tag:
Int) {
let datastring = data.base64EncodedString()
print(datastring)
}
如果您知道正确的流程,请帮助我。
谢谢
【问题讨论】:
-
我对 CocoaAsyncSocket 一无所知,但是为什么你尝试从 serverSocket 而不是 newSocket 读取数据?
标签: swift sockets tcp cocoaasyncsocket