didReceiveData가 호출되지 않았다 작동 아무도 발견하고 - 나는 그것이 확인을받은 서버에 메시지를 보내 내 주류 의 UIViewController에 의해 호출 된이 신속 클래스를 코딩을 , 서버가 응답을 보냈을 때 didReceiveData()가 트리거되지 않았으므로 클라이언트는 결코 응답을 수신하지 않습니다.나는 GCDAsyncUdpSocket에 대한 몇 가지 예를 찾고 있지만,
나는 인터넷 검색을 계속하고 문서를보고 클라이언트가 바인딩 할 필요가 없다고 말했습니다 (서버에서만이 작업이 필요합니다). 아무에게도 도움이 될 수 있습니까? 미리 감사드립니다.
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()를 제거 했는데도 데이터를받지 못했습니다 - 콜백 함수에 오류가 있습니다 - didReceive 대신 didReceiveData로 코딩되어 작동합니다 - 도와 주셔서 감사합니다. – stran