didReceiveData從來沒有叫 - 我編寫這裏面叫我的主線的UIViewController迅速類發出一個信息,它收到了OK的服務器,但是當服務器發回響應時,客戶端永遠不會收到它,因爲didReceiveData()從未觸發。我找上GCDAsyncUdpSocket一些例子,但沒有發現任何的作品
我一直在使用Google,並期待在文檔,和它說,客戶並不需要綁定(只有服務器需要這樣做),任何人都可以幫我這個 - 在此先感謝。
import UIKit
import CocoaAsyncSocket
class UdpSocketSR: NSObject, GCDAsyncUdpSocketDelegate {
var socket:GCDAsyncUdpSocket!
var rc : Int = 0
var messageOut : String = ""
var messageIn : String = ""
override init(){
super.init()
}
func SetupAndSend(IP: String, PORT: Int, DATA : String) -> Int
{
socket = GCDAsyncUdpSocket(delegate: self, delegateQueue: DispatchQueue.main)
messageOut = DATA
do {
let data = messageOut.data(using: String.Encoding.utf8)
socket.send(data!, toHost: IP, port: UInt16(PORT), withTimeout: 3, tag: 0)
try socket.beginReceiving()
sleep(3)
socket.close()
} catch {
rc = -1
}
return rc
}
private func udpSocket(sock:GCDAsyncUdpSocket!,didConnectToAddress data : NSData!){
rc = -2
}
private func udpSocket(sock: GCDAsyncUdpSocket!, didReceiveData dataRecv: NSData!, fromAddress address: NSData!, withFilterContext filterContext: AnyObject!) {
messageIn = NSString(data: dataRecv as Data, encoding: String.Encoding.utf8.rawValue) as! String
}
}
爲什麼你關閉套接字正確發送後..? – WeiJay
我刪除了socket.close(),它仍然沒有收到數據 - 錯誤是與回調函數 - 我把它編碼爲didReceiveData而不是didReceive,它的工作原理 - 感謝您的幫助。 – stran