【问题标题】:Error Domain=NSPOSIXErrorDomain Code=48 "Address already in use" Error in bind() function1错误域 = NSPOSIXErrorDomain 代码 = 48“地址已在使用中”绑定()函数中的错误 1
【发布时间】:2021-03-06 05:26:29
【问题描述】:

Error Domain=NSPOSIXErrorDomain Code=48 "地址已在使用" bind() 函数中的错误

【问题讨论】:

    标签: ios swift3


    【解决方案1】:
    class DeviceScanning:NSObject,GCDAsyncUdpSocketDelegate{
        
        var address = "255.255.255.255"
        var port:UInt16 = 5593
        var socket:GCDAsyncUdpSocket!
        var socketReceive:GCDAsyncUdpSocket!
        var error : NSError?
        
         override init() {
        }
        
        func broadcastNearByDevices(){
            let jsnStr = "{\"cmd\":\"ping\"}"
            let message = jsnStr.data(using: String.Encoding.utf8)
            socket = GCDAsyncUdpSocket(delegate: self, delegateQueue: DispatchQueue.main)
            do {
                try socket.enableReusePort(true)
                try socket.bind(toPort: port)
                try socket.enableBroadcast(true)
                try socket.beginReceiving()
                socket.send(message!, toHost: address, port: port, withTimeout: -1, tag: 0)
            } catch {
                stopBroadcasting()
                print(error)
                //delegate?.broadcastData(ipAddress: error.localizedDescription)
            }
        }
        
        func stopBroadcasting(){
            socket?.close()
        }
        private func udpSocket(sock: GCDAsyncUdpSocket!, didConnectToAddress address: NSData!) {
            print("didConnectToAddress");
        }
        
        private func udpSocket(sock: GCDAsyncUdpSocket!, didNotConnect error: NSError!) {
            print("didNotConnect \(error)")
        }
        
        func udpSocket(_ sock: GCDAsyncUdpSocket!, didSendDataWithTag tag: Int) {
            print("didSendDataWithTag")
        }
        
        private func udpSocket(sock: GCDAsyncUdpSocket!, didNotSendDataWithTag tag: Int, dueToError error: NSError!) {
            print("didNotSendDataWithTag")
        }
        
        func udpSocket(_ sock: GCDAsyncUdpSocket, didReceive data: Data, fromAddress address: Data,withFilterContext filterContext: Any?) {
            //smartDevicesArr.removeAll()
            var host: NSString?
            var port1: UInt16 = 0
            
            GCDAsyncUdpSocket.getHost(&host, port: &port1, fromAddress: address as Data)
            print("From",data)
            
            let gotdata: NSString = NSString(data: data as Data as Data, encoding: String.Encoding.utf8.rawValue)!
            print("gotdata",gotdata)
            
           if let json = try? JSONSerialization.jsonObject(with: data, options: []) as? [String:Any] {
    print("JSON Response is",json)
    }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2011-01-09
      • 2017-05-18
      • 1970-01-01
      • 2016-10-24
      • 2020-05-20
      • 2018-03-08
      相关资源
      最近更新 更多