`

swift -> AsyncSocket 建立 UDP socket 连接

 
阅读更多

下載位置:https://github.com/robbiehanson/CocoaAsyncSocket

使用 AsyncUdpSocket.m 和 AsyncUdpSocket.h

因為專案是 Swift 專案,要使用 objecitive-c 的函式庫要在 Header 檔中 import。

1. 複製 AsyncUdpSocket.m 和 AsyncUdpSocket.h 到專案中,xcode 會問你是否建立 Bridge file,確定建立。

2. 在 你的專案名稱-Bridging-Header.h 檔中加入:

1

#import "AsyncUdpSocket.h"

 

ViewControler.swift

//
//  ViewController.swift
//  udp_test
//
//  Created by  on 16/5/9.
//  Copyright © 2016年. All rights reserved.
//

import UIKit

class ViewController: UIViewController,AsyncUdpSocketDelegate{
    var udpClient = AsyncUdpSocket();
    override func viewDidLoad() {
        super.viewDidLoad();
                // Do any additional setup after loading the view, typically from a nib.
    }
    //手动发送
    @IBAction func btn_send(sender: UIButton) {
        let data = "Hi, im wang".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true);
        udpClient.sendData(data, toHost: "192.168.1.102", port: 60002, withTimeout: -1, tag: 0);
        //开始监听接收,并如10秒内无消息回复就自动断开连接,只接收一次,//如果设置超时为-1 则没有超时限制
        udpClient.receiveWithTimeout(10, tag: 0);
        
    }
    //手动关闭连接
    @IBAction func close(sender: UIButton) {
        udpClient.close();
    }
    //手动连接
    @IBAction func btn_conn(sender: UIButton) {
        udpClient = AsyncUdpSocket(delegate: self);
    }
    //如果本地发送成功 监听
    func onUdpSocket(sock: AsyncUdpSocket!, didSendDataWithTag tag: Int) {
        print("send success");
    }
    //监听接收
    func onUdpSocket(sock: AsyncUdpSocket!, didReceiveData data: NSData!, withTag tag: Int, fromHost host: String!, port: UInt16) -> Bool {
        let str = NSString(data: data, encoding: NSUTF8StringEncoding);
        print("receive:\(str)");
        //如果不能一次接收完还有更多的
        udpClient.receiveWithTimeout(10, tag: 0);
        return true;
    }
    
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    
    
}

 

 

 

 

//

import UIKit

class ViewController: UIViewController,AsyncUdpSocketDelegate{
    var udpClient = AsyncUdpSocket();
    override func viewDidLoad() {
        super.viewDidLoad();
                // Do any additional setup after loading the view, typically from a nib.
    }
    //手动发送
    @IBAction func btn_send(sender: UIButton) {
        let data = "Hi, im wang".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true);
        udpClient.sendData(data, toHost: "192.168.1.102", port: 60002, withTimeout: -1, tag: 0);
        //开始监听接收,并如10秒内无消息回复就自动断开连接,只接收一次,//如果设置超时为-1 则没有超时限制
        udpClient.receiveWithTimeout(-1, tag: 0);
        
    }
    //手动关闭连接
    @IBAction func close(sender: UIButton) {
        udpClient.close();
    }
    //手动连接
    @IBAction func btn_conn(sender: UIButton) {
        udpClient = AsyncUdpSocket(delegate: self);
    }
    //如果本地发送成功 监听
    func onUdpSocket(sock: AsyncUdpSocket!, didSendDataWithTag tag: Int) {
        print("send success");
    }
    //监听接收
    func onUdpSocket(sock: AsyncUdpSocket!, didReceiveData data: NSData!, withTag tag: Int, fromHost host: String!, port: UInt16) -> Bool {
        let str = NSString(data: data, encoding: NSUTF8StringEncoding);
        print("receive:\(str)");
        //如果不能一次接收完还有更多的
        udpClient.receiveWithTimeout(-1, tag: 0);
        return true;
    }
    
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    
    
}

 

 

分享到:
评论

相关推荐

    swift -> AsyncSocket 建立 tcp socket 连接

    这篇博客文章探讨了如何在Swift中使用`AsyncSocket`库建立TCP套接字连接。 `AsyncSocket`是由CocoaAsyncSocket项目提供的一个强大的Objective-C库,它提供了一种简单的方法来处理基于TCP的网络通信。虽然它的原始...

    swift-基于AsyncSocket搭建即时通讯体系

    基于AsyncSocket搭建即时通讯体系 . 包含TCP连接 , 消息发送 , 消息接收 , 心跳处理 ,断网重连 , 消息超时 , 消息分发 , 数据库结构设计 , 消息丢失等 . 以及UI设计, 文本表情消息/语音消息/图片消息/视频消息/文件...

    Swift2.0-TCP-UDP-Helper:基于 AsyncSocket 的 TCPUDP 助手,可被 Swift 语言调用。 和单身

    项目需要用swift编写一个iOS的LED控制程序,连接的微型wifi模块工作在STA模式后会间隔往指定的端口发送UDP消息,同时建立一个TCP服务器,所以需要使用TCP和UDP连接。 AsyncSocket挺火,但是是OC的,所以在写完一个...

    ios socket AsyncSocket使用

    使用`AsyncSocket`首先需要创建一个实例,然后调用`connectToHost:onPort:`方法来建立连接。例如: ```objc AsyncSocket *socket = [[AsyncSocket alloc] initWithDelegate:self]; [socket connectToHost:@...

    swift-CocoaAsyncSocket为Mac和iOS提供了一个易于使用和强大的异步Socket网络库

    这个库由Robbie Hanson开发,是Objective-C原版AsyncSocket的Swift版本,允许开发者轻松地处理TCP连接和数据传输。 在iOS和Mac应用开发中,网络通信是不可或缺的一部分,用于实现应用程序与服务器之间的数据交换。...

    利用AsyncSocket与后台数据交互

    - `- (void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port`:当连接建立成功时调用。 - `- (void)onSocket:(AsyncSocket *)sock willDisconnectWithError:(NSError *)err`:...

    AsyncSocket-With-Swift-From-ObjC:使用 Swift

    下面将详细讨论如何在Swift中初始化和使用AsyncSocket,以及实现连接TCP服务器、发送数据和接收数据的关键步骤。 首先,我们需要在Swift项目中导入Objective-C的代码。为了做到这一点,需要确保`AsyncSocket.h`...

    AsyncSocketDemo-master_AsyncSocket通讯_

    2. **Delegate方法**:AsyncSocket的委托方法,如`socket:didConnectToHost:port:`、`socket:didReceiveData:withTag:`和`socketDidDisconnect:withError:`等,这些方法会在特定的网络事件发生时被调用。 3. **连接...

    基于第三方AsyncSocket的Demo

    - `onSocket:didAcceptNewSocket:`:当AsyncSocket作为服务器接受到新的客户端连接时调用,可用于创建一个新的AsyncSocket实例来处理新连接。 - `onSocket:willDisconnectWithError:`和`onSocketDidDisconnect:`:...

    AsyncSocket -Python异步Socket编程代码

    Python异步Socket编程代码,对想学习python socket的人有用

    asyncsocket

    /** * In the event of an error, the socket is closed. * You may call "unreadData" during this call-back ...- (NSRunLoop *)onSocket:(AsyncSocket *)sock wantsRunLoopForNewSocket:(AsyncSocket *)newSocket;

    iOS socket的的调用

    本知识点将深入探讨如何使用第三方库AsyncSocket实现iOS中的Socket通信,以及如何通过提供的两个demo理解Socket的工作原理。 AsyncSocket是由CocoaAsyncSocket项目提供的一个强大的Objective-C类,它简化了iOS和Mac...

    iOS应用中使用AsyncSocket库处理Socket通信的用法讲解

    建立Socket长连接的方法可以设计为: ```objc // 在LGSocketServe.m中 - (void)startConnectToHost:(NSString *)host port:(uint16_t)port { self.socket = [[AsyncSocket alloc] initWithDelegate:self]; ...

    AsyncSocket客服端服务端Demo

    1. **AsyncSocket**: 这个库提供了一种简单的方法来创建和管理socket连接,包括建立连接、发送和接收数据、处理错误和断开连接。它的异步特性意味着在进行网络操作时,不会阻塞主线程,从而保持用户界面的流畅性。...

    AsyncSocket服务端及用户端

    此外,AsyncSocket还提供了连接状态的监控,如连接建立、断开、超时等事件的回调,开发者可以根据这些回调来执行相应的业务逻辑。例如,当连接成功建立时,可以开始发送和接收数据;当连接断开时,可能需要重新连接...

    iPhone的Socket编程使用开源代码之AsyncSocket

    在iOS开发中,Socket编程是实现设备间网络通信的基础,特别是在需要进行低级TCP或UDP通信时。`AsyncSocket`是一个流行的开源库,由Dean Wampler编写,它为Objective-C提供了异步TCP套接字(socket)编程的简单接口。...

    asyncsocket,异步套接字的SDK实现,VC++6.0,mfc

    它提供了丰富的成员函数,如Create()用于创建套接字,Connect()用于建立客户端连接,Accept()用于服务器端接受连接,以及Send()和Receive()用于数据的发送和接收。除此之外,还有OnConnect(), OnReceive(), OnSend()...

    AsyncSocket

    2. 连接与监听:`Connect()`方法用于建立客户端到服务器的连接,`Listen()`方法用于使服务器端开始监听特定端口。 3. 异步读写:`AsyncRead()`和`AsyncWrite()`方法支持异步读取和写入数据,这两个方法不会阻塞调用...

Global site tag (gtag.js) - Google Analytics