ios – Swift:使用GCDAsyncUdpSocket接收UDP

ios – Swift:使用GCDAsyncUdpSocket接收UDP,第1张

概述背景: 我想能够在我的iOS应用和服务器之间发送和接收UDP数据包. 服务器回传每个传入的消息给客户端的应用程序.服务器经过测试和确认工作.我有一个StartViewController,它启动两个实现GCDAsyncUdpSocketDelegate的类,一个用于发送,另一个用于接收. “发送套接字”正在工作,服务器收到消息. 问题: 应用程序在发送后不会收到传入的消息.由于didReceive 背景:

我想能够在我的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所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1096154.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存