我想能够在我的iOS应用和服务器之间发送和接收UDP数据包.
服务器回传每个传入的消息给客户端的应用程序.服务器经过测试和确认工作.我有一个StartVIEwController,它启动两个实现GcdasyncUdpSocketDelegate的类,一个用于发送,另一个用于接收. “发送套接字”正在工作,服务器收到消息.
问题:
应用程序在发送后不会收到传入的消息.由于dIDReceiveData从来没有被调用,所以有一些侦听套接字设置可能是错误的.
我这样做完全错了吗?
开始:
class StartVIEwController: UIVIEwController { var inSocket : InSocket! var outSocket : OutSocket! overrIDe func vIEwDIDLoad() { super.vIEwDIDLoad() inSocket = InSocket() outSocket = OutSocket() } @IBAction func gobutton(sender: UIbutton) { outSocket.send("This is a message!") }}
接收:
class InSocket: NSObject,GcdasyncUdpSocketDelegate { let IP = "255.255.255.255" let PORT:UInt16 = 5556 var socket:GcdasyncUdpSocket! overrIDe init(){ super.init() setupConnection() } func setupConnection(){ var error : NSError? socket = GcdasyncUdpSocket(delegate: self,delegateQueue: dispatch_get_main_queue()) socket.bindtoport(PORT,error: &error) socket.enablebroadcast(true,error: &error) socket.joinMulticastGroup(IP,error: &error) socket.beginReceiving(&error) } func udpSocket(sock: GcdasyncUdpSocket!,dIDReceiveData data: NSData!,fromAddress address: NSData!,withFilterContext filterContext: AnyObject!) { println("incoming message: \(data)"); }}
发送:
class OutSocket: NSObject,GcdasyncUdpSocketDelegate { let IP = "90.112.76.180" let PORT:UInt16 = 5556 var socket:GcdasyncUdpSocket! overrIDe init(){ super.init() setupConnection() } func setupConnection(){ var error : NSError? socket = GcdasyncUdpSocket(delegate: self,delegateQueue: dispatch_get_main_queue()) socket.connectToHost(IP,onPort: PORT,error: &error) } func send(message:String){ let data = message.dataUsingEnCoding(NSUTF8StringEnCoding) socket.sendData(data,withTimeout: 2,tag: 0) } func udpSocket(sock: GcdasyncUdpSocket!,dIDConnectToAddress address: NSData!) { println("dIDConnectToAddress"); } func udpSocket(sock: GcdasyncUdpSocket!,dIDNotConnect error: NSError!) { println("dIDNotConnect \(error)") } func udpSocket(sock: GcdasyncUdpSocket!,dIDSendDataWithTag tag: Int) { println("dIDSendDataWithTag") } func udpSocket(sock: GcdasyncUdpSocket!,dIDNotSendDataWithTag tag: Int,duetoError error: NSError!) { println("dIDNotSendDataWithTag") }}
编辑:
添加了忘记的代码行.
func setupConnection(){ var error : NSError? socket = GcdasyncUdpSocket(delegate: self,delegateQueue: dispatch_get_main_queue()) socket.bindtoport(PORT,error: &error) socket.connectToHost(SERVER_IP,error: &error) socket.beginReceiving(&error) send("Ping")}func send(message:String){ let data = message.dataUsingEnCoding(NSUTF8StringEnCoding) socket.sendData(data,tag: 0)}总结
以上是内存溢出为你收集整理的ios – Swift:使用GCDAsyncUdpSocket接收UDP全部内容,希望文章能够帮你解决ios – Swift:使用GCDAsyncUdpSocket接收UDP所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)