下載位置: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套接字连接。 `AsyncSocket`是由CocoaAsyncSocket项目提供的一个强大的Objective-C库,它提供了一种简单的方法来处理基于TCP的网络通信。虽然它的原始...
基于AsyncSocket搭建即时通讯体系 . 包含TCP连接 , 消息发送 , 消息接收 , 心跳处理 ,断网重连 , 消息超时 , 消息分发 , 数据库结构设计 , 消息丢失等 . 以及UI设计, 文本表情消息/语音消息/图片消息/视频消息/文件...
项目需要用swift编写一个iOS的LED控制程序,连接的微型wifi模块工作在STA模式后会间隔往指定的端口发送UDP消息,同时建立一个TCP服务器,所以需要使用TCP和UDP连接。 AsyncSocket挺火,但是是OC的,所以在写完一个...
使用`AsyncSocket`首先需要创建一个实例,然后调用`connectToHost:onPort:`方法来建立连接。例如: ```objc AsyncSocket *socket = [[AsyncSocket alloc] initWithDelegate:self]; [socket connectToHost:@...
这个库由Robbie Hanson开发,是Objective-C原版AsyncSocket的Swift版本,允许开发者轻松地处理TCP连接和数据传输。 在iOS和Mac应用开发中,网络通信是不可或缺的一部分,用于实现应用程序与服务器之间的数据交换。...
- `- (void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port`:当连接建立成功时调用。 - `- (void)onSocket:(AsyncSocket *)sock willDisconnectWithError:(NSError *)err`:...
下面将详细讨论如何在Swift中初始化和使用AsyncSocket,以及实现连接TCP服务器、发送数据和接收数据的关键步骤。 首先,我们需要在Swift项目中导入Objective-C的代码。为了做到这一点,需要确保`AsyncSocket.h`...
2. **Delegate方法**:AsyncSocket的委托方法,如`socket:didConnectToHost:port:`、`socket:didReceiveData:withTag:`和`socketDidDisconnect:withError:`等,这些方法会在特定的网络事件发生时被调用。 3. **连接...
- `onSocket:didAcceptNewSocket:`:当AsyncSocket作为服务器接受到新的客户端连接时调用,可用于创建一个新的AsyncSocket实例来处理新连接。 - `onSocket:willDisconnectWithError:`和`onSocketDidDisconnect:`:...
Python异步Socket编程代码,对想学习python socket的人有用
/** * 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实现iOS中的Socket通信,以及如何通过提供的两个demo理解Socket的工作原理。 AsyncSocket是由CocoaAsyncSocket项目提供的一个强大的Objective-C类,它简化了iOS和Mac...
建立Socket长连接的方法可以设计为: ```objc // 在LGSocketServe.m中 - (void)startConnectToHost:(NSString *)host port:(uint16_t)port { self.socket = [[AsyncSocket alloc] initWithDelegate:self]; ...
1. **AsyncSocket**: 这个库提供了一种简单的方法来创建和管理socket连接,包括建立连接、发送和接收数据、处理错误和断开连接。它的异步特性意味着在进行网络操作时,不会阻塞主线程,从而保持用户界面的流畅性。...
此外,AsyncSocket还提供了连接状态的监控,如连接建立、断开、超时等事件的回调,开发者可以根据这些回调来执行相应的业务逻辑。例如,当连接成功建立时,可以开始发送和接收数据;当连接断开时,可能需要重新连接...
在iOS开发中,Socket编程是实现设备间网络通信的基础,特别是在需要进行低级TCP或UDP通信时。`AsyncSocket`是一个流行的开源库,由Dean Wampler编写,它为Objective-C提供了异步TCP套接字(socket)编程的简单接口。...
它提供了丰富的成员函数,如Create()用于创建套接字,Connect()用于建立客户端连接,Accept()用于服务器端接受连接,以及Send()和Receive()用于数据的发送和接收。除此之外,还有OnConnect(), OnReceive(), OnSend()...
2. 连接与监听:`Connect()`方法用于建立客户端到服务器的连接,`Listen()`方法用于使服务器端开始监听特定端口。 3. 异步读写:`AsyncRead()`和`AsyncWrite()`方法支持异步读取和写入数据,这两个方法不会阻塞调用...