Swift3.0 — CocoaAsyncSocket客户端例子

Swift3.0 — CocoaAsyncSocket客户端例子,第1张

概述本文参考了http://www.voidcn.com/article/p-zmgyowjc-bgc.html这篇博文,这里对它进行了更新,使用了最新的xCode8和Swift3。在这里首先要感谢下原文作者,这篇博文帮了我的大忙,我学习过之后也在这里做一下记录。 1、服务端用我用的SoketTool调试工具,运行在WIN10,我只做了一个客户端。(下载地址:http://download.csdn.

本文参考了http://www.jb51.cc/article/p-zmgyowjc-bgc.html这篇博文,这里对它进行了更新,使用了最新的xCode8和Swift3。在这里首先要感谢下原文作者,这篇博文帮了我的大忙,我学习过之后也在这里做一下记录。

1、服务端用我用的SoketTool调试工具,运行在WIN10,我只做了一个客户端。(下载地址:http://download.csdn.net/detail/ycw1142945317/5114329)
2、客户端Socket通讯用的CocoaAsyncSocket通讯框架,这个框架支持IPv6,据说如果App不支持IPv6的话无法提交到AppStore。

CocoaAsyncSocket直接从GitHub下载:
https://github.com/robbiehanson/CocoaAsyncSocket

怎么使用CocoaAsyncSocket呢?
我用的是最直接的方法,下载下来解压后是下面的文件,找到这两个文件,我们用GcdasyncSocket(TCP),直接将这两个文件拖进xCode8


将这两个文件拖进xCode后它会提示你是否建立一个BrIDge-@R_404_5548@,就点击Create。
然后点击这个头文件并输入

#import "GcdasyncSocket.h"

这时候按下Command+B重新编译一下。这样CocoaAsyncSocket就导入完毕了。

下面是客户端界面

进入VIEwController.swift

//// VIEwController.swift// AsyncSocket_Exp//// Created by 大老虎 on 2016/11/27.// copyright © 2016年 Tiger. All rights reserved.//import UIKitclass VIEwController: UIVIEwController,GcdasyncSocketDelegate {    @IBOutlet weak var serveripinput: UITextFIEld!    @IBOutlet weak var msginput: UITextFIEld!    @IBOutlet weak var conBtn: UIbutton!    @IBOutlet weak var sendBtn: UIbutton!    @IBOutlet weak var msgVIEw: UITextVIEw!    let serverPort: UInt16 = 6666    var clIEntSocket:GcdasyncSocket!    overrIDe func vIEwDIDLoad() {        super.vIEwDIDLoad()        sendBtn.isEnabled = false // Socket未连接成功时发送按钮不能用    }    overrIDe func dIDReceiveMemoryWarning() {        super.dIDReceiveMemoryWarning()        // dispose of any resources that can be recreated.    }    // 连接服务器按钮事件    @IBAction func conBtnClick(_ sender: AnyObject) {        if serveripinput.text?.isEmpty == false { // 如果IP地址不为空则开始连接Socket            clIEntSocket = GcdasyncSocket()            clIEntSocket.delegate = self            clIEntSocket.delegateQueue = dispatchQueue.global()            do {                try clIEntSocket.connect(toHost: serveripinput.text!,onPort: serverPort)            } catch {                print("try connect error: \(error)")                conBtn.backgroundcolor = UIcolor.red            }        } else {            msgVIEw.insertText("IP地址不能为空!\n")        }    }    func socket(_ sock: GcdasyncSocket,dIDConnectToHost host: String,port: UInt16) -> VoID {        print("connect success")        sendBtn.isEnabled = true // 连接成功后发送按钮设为可用        clIEntSocket.readData(withTimeout: -1,tag: 0)    }    func socketDIDdisconnect(_ sock: GcdasyncSocket,withError err: Error?) -> VoID {        print("connect error: \(err)")    }    func socket(_ sock: GcdasyncSocket,dIDRead data: Data,withTag tag: Int) -> VoID {        // 1、获取客户端发来的数据,把 NSData 转 Nsstring        let readClIEntDataString: Nsstring? = Nsstring(data: data as Data,enCoding: String.EnCoding.utf8.rawValue)        print("---Data Recv---")        print(readClIEntDataString)        // 2、主界面UI显示数据        dispatchQueue.main.async {            let showStr: NSMutableString = NSMutableString()            showStr.append(self.msgVIEw.text)            showStr.append(readClIEntDataString! as String)            showStr.append("\r\n")            self.msgVIEw.text = showStr as String        }        // 3、处理请求,返回数据给客户端OK        let serviceStr: NSMutableString = NSMutableString()        serviceStr.append("OK")        serviceStr.append("\r\n")        clIEntSocket.write(serviceStr.data(using: String.EnCoding.utf8.rawValue)!,withTimeout: -1,tag: 0)        // 4、每次读完数据后,都要调用一次监听数据的方法        clIEntSocket.readData(withTimeout: -1,tag: 0)    }    // 发送消息按钮事件    @IBAction func sendBtnClick(_ sender: AnyObject) {        if msginput.text?.isEmpty == false { // 如果消息不为空则发送            let serviceStr: NSMutableString = NSMutableString()            serviceStr.append(self.msginput.text!)            serviceStr.append("\r\n")            clIEntSocket.write(serviceStr.data(using: String.EnCoding.utf8.rawValue)!,tag: 0)        }    }}

到这里客户端程序就完成了,可以用iOS模拟器来跑一下。

SocketTool截图为

以上展示的仅为CocoaAsyncSocket的基本用法,若想真正的将其为我所用还需要硬着头皮去官网看文档,自己需要什么就用什么。文档地址为:https://github.com/robbiehanson/CocoaAsyncSocket/wiki/Reference_GCDAsyncSocket

总结

以上是内存溢出为你收集整理的Swift3.0 — CocoaAsyncSocket客户端例子全部内容,希望文章能够帮你解决Swift3.0 — CocoaAsyncSocket客户端例子所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1069472.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-26
下一篇2022-05-26

发表评论

登录后才能评论

评论列表(0条)

    保存