`

swift -> AsyncSocket 建立 tcp socket 连接

 
阅读更多

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

使用 AsyncSocket.h 及 AsyncSocket.m

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

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

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

1
#import "AsyncSocket.h"

 

ViewControler.swift

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

import UIKit

class ViewController: UIViewController,AsyncSocketDelegate  {
    //手动发送
    @IBAction func btn_send(sender: UIButton) {
        let bytearr:[UInt8] = [5,6,7];
        let data: NSData = NSData(bytes: bytearr, length: bytearr.count);
        //send data
        socket.writeData(data, withTimeout: 0, tag: 0);
        print("has send hand");
        //开始监听接收,并如10秒内无消息回复就自动断开连接,只接收一次,
        socket.readDataWithTimeout(10, tag: 0);
        //如果设置超时为-1 则没有超时限制
        //socket.readDataWithTimeout(-1, tag: 0);
    }
 
    //手动断开
    @IBAction func btn_discon(sender: UIButton) {
        socket.disconnect();
        print("手动点击了断开");
        
    }
    //手动连接
    @IBAction func btn_conn(sender: UIButton) {
        socket = AsyncSocket(delegate: self);
        do{
            try socket.connectToHost("192.168.1.102", onPort: 60000);
        }catch let error as NSError{
            print(error);
        }
        print("连接成功");
    }
    
    
    
    var socket: AsyncSocket!;

    override func viewDidLoad() {
        super.viewDidLoad();
  
        
        // Do any additional setup after loading the view, typically from a nib.
    }
    
    //当连接建立后调用
    func onSocket(sock: AsyncSocket!, didConnectToHost host: String!, port: UInt16) {
 
        print("has connect");
        
    }
    
    //当有回调调用
    func onSocket(sock: AsyncSocket!, didReadData data: NSData!, withTag tag: Int) {
        print("has receive");
        print("data:\(data.length)");
        //如果不能一次接收完还有更多的
        socket.readDataWithTimeout(10, tag: 0);
        //如果设置超时为-1 则没有超时限制
        //socket.readDataWithTimeout(-1, tag: 0);
    }
    
    //当断开连接调用
    func onSocketDidDisconnect(sock: AsyncSocket!) {
        print("has disconnect");
    }
 

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    swift -> AsyncSocket 建立 UDP socket 连接

    Swift编程语言中,AsyncSocket库通常用于处理TCP连接,但其实它也支持UDP(User Datagram Protocol)通信。本文将深入探讨如何使用AsyncSocket在Swift中建立UDP套接字连接,并结合提供的AsyncUdpSocket.h和...

    swift-基于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应用开发中,网络通信是不可或缺的一部分,用于实现应用程序与服务器之间的数据交换。...

    OS下如何同时开启两个AsyncSocket TCP连接.tx

    这一步骤在`ConnectToServer:`方法中实现,它接收服务器地址和端口号作为参数,并尝试建立连接: ```objective-c - (BOOL)ConnectToServer:(NSString *)addr port:(int)port { // 设置服务器地址和端口 // 尝试...

    利用AsyncSocket与后台数据交互

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

    Android socket tcp应用,包含服务器和客户端,代码正常通过测试,学习使用

    - TCP是一种面向连接的协议,数据传输前需要建立连接。 - 它提供了可靠的数据传输服务,包括顺序传输、错误检测与重传机制。 - 数据被分割为多个段进行传输,并在接收端重新组装。 - 每个TCP连接由一个四元组...

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

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

    IOS应用源码之【框架】基于第三方AsyncSocket的TCP服务器、TCP客户端、UDP客户端.rar

    IOS应用源码之【框架】基于第三方AsyncSocket的TCP服务器、TCP客户端、UDP客户端.rar

    VCTcp异步Socket通信类

    VCTcp异步Socket通信类就是一种实现TCP(传输控制协议)网络通信的工具,它专为Visual C++ 6.0(VC6)设计,提供了一种高效且易于使用的接口来处理异步Socket操作。下面我们将深入探讨这个类以及它背后的原理。 ...

    【框架】基于第三方AsyncSocket的TCP服务器、TCP客户端、UDP客户端.zipIOS应用例子源码下载

    【框架】基于第三方AsyncSocket的TCP服务器、TCP客户端、UDP客户端.zipIOS应用例子源码下载【框架】基于第三方AsyncSocket的TCP服务器、TCP客户端、UDP客户端.zipIOS应用例子源码下载 1.适合学生学习研究参考 2.适合...

    基于第三方AsyncSocket的Demo

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

    AsyncSocketDemo-master_AsyncSocket通讯_

    2. **易于使用**:提供了简单易懂的API,使得开发者可以快速集成到项目中,实现TCP连接、读写数据、断开连接等功能。 3. **错误处理**:AsyncSocket提供了详细的错误处理机制,可以帮助开发者快速定位和解决网络...

    iOS socket的的调用

    AsyncSocket是由CocoaAsyncSocket项目提供的一个强大的Objective-C类,它简化了iOS和Mac OS X上的TCP Socket编程。这个库不仅支持异步读写操作,还处理了许多底层Socket编程中常见的复杂问题,如连接管理、线程安全...

    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;

    AsyncSocket

    4. **强大的功能**:AsyncSocket支持TCP连接的创建、读写、断开以及错误处理等基本功能。此外,还有SSL/TLS加密、数据分帧、连接池、广播地址监听等高级特性,满足了各种复杂的网络应用场景。 5. **易于使用**:...

Global site tag (gtag.js) - Google Analytics