加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Swift开发:GCDAsyncUdpSocket 通信之UDP广播

发布时间:2020-12-14 06:20:18 所属栏目:百科 来源:网络整理
导读:功能需求: 发送广播,搜索设备 【在wifi下无法接收广播,原因: 路由器阻止广播】 1 使用GCDAsyncUdpSocket 实现广播 下载地址:包含tcp和udp,共4个文件http://download.csdn.net/detail/taoerit/9809540 2 Swift Code: // // ViewController.swift // 3-Sw

功能需求:

发送广播,搜索设备

【在wifi下无法接收广播,原因: 路由器阻止广播】

1 使用GCDAsyncUdpSocket 实现广播

下载地址:包含tcp和udp,共4个文件http://download.csdn.net/detail/taoerit/9809540

2 Swift Code:

//

// ViewController.swift

// 3-SwiftSocket-udp

// Created by 黄涛 on 17/4/10.

// Copyright ? 2017 huangtao. All rights reserved.

//


import UIKit


class ViewController:UIViewController,GCDAsyncUdpSocketDelegate {


@IBOutletweakvar btnStart:UIButton!

@IBOutletweakvar lbRecvMsg:UITextView!

var mainQueue =dispatch_get_main_queue()


var udp:GCDAsyncUdpSocket!;

let localPort:UInt16 =54321;

let boardcasePort:UInt16 =1001;

overridefunc viewDidLoad() {

super.viewDidLoad()

btnStart.addTarget(self,action:"btnStartClickFun",forControlEvents:UIControlEvents.TouchUpInside)

udp =GCDAsyncUdpSocket(delegate:self,delegateQueue:dispatch_get_main_queue());

do

{

tryudp.enableBroadcast(true)

tryudp.bindToPort(localPort,interface:udpError);

tryudp.beginReceiving();

}

catch{

print("catch:(udpError)")

}

}

var udpError:String?;

func btnStartClickFun(){

//开始广播

udp.sendData("#SYSTEMn".dataUsingEncoding(NSUTF8StringEncoding),toHost: "255.255.255.255",port:boardcasePort,withTimeout: -1,tag:0);

}

func udpSocket(sock:GCDAsyncUdpSocket!,didReceiveData data:NSData!,fromAddress address:NSData!,withFilterContext filterContext:AnyObject!) {

let recv:NSString =NSString(data: data,encoding:NSUTF8StringEncoding)!;

// 2 主界面ui显示数据

dispatch_async(mainQueue,{

let showStr:NSMutableString =NSMutableString()

showStr.appendString(recvasString)

showStr.appendString("n")

self.lbRecvMsg.text = showStrasString;

})

}

func udpSocket(sock:GCDAsyncUdpSocket!,didNotConnect error:NSError!) {

print("连接失败:(error)")

}


func udpSocket(sock:GCDAsyncUdpSocket!,didSendDataWithTag tag:Int) {

print("已经发送数据:(tag)")

}

func udpSocketDidClose(sock:GCDAsyncUdpSocket!,withError error:NSError!) {

print("断开连接 error:(error)")

}

func udpSocket(sock:GCDAsyncUdpSocket!,didConnectToAddress address:NSData!) {

print("开始连接")

}

overridefunc didReceiveMemoryWarning() {

super.didReceiveMemoryWarning()

// Dispose of any resources that can be recreated.

}

}

3 效果图

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读