Swift开发:GCDAsyncSocket通信之TCP 客户端

1 功能需求:

1 在Swift下使用GCDAsyncSocket实现简单的信息收发功能

2 Mac下为tcp客户端,windows下为tcp服务器

2 效果图:


3 swift代码:需要导入GCDAsyncSocket库文件,可去github下载

import UIKit


class ViewController: UIViewController,GCDAsyncSocketDelegate {


@IBOutlet var serveripInput: UITextField!

@IBOutlet var msginput: UITextField!

@IBOutlet var conBtn: UIButton!

@IBOutlet var sendBtn: UIButton!

@IBOutlet var msgView: UITextView!

let serverPort: UInt16 = 9050

var clientSocket: GCDAsyncSocket!

var mainQueue = dispatch_get_main_queue()

override func viewDidLoad() {

super.viewDidLoad()

}


//连接服务器按钮事件

@IBAction func conBtnClick(sender: AnyObject) {

do {

clientSocket = GCDAsyncSocket()

clientSocket.delegate = self

clientSocket.delegateQueue = dispatch_get_global_queue(0,0)

try clientSocket.connectToHost(serveripInput.text!,onPort: serverPort)

conBtn.backgroundColor = UIColor.blueColor()

}

catch {

print("error")

conBtn.backgroundColor = UIColor.redColor()

}

}

func socket(sock: GCDAsyncSocket!,didConnectToHost host: String!,port: UInt16) {

print("与服务器连接成功!")

clientSocket.readDataWithTimeout(-1,tag: 0)

}

func socketDiddisconnect(sock: GCDAsyncSocket!,withError err: NSError!) {

print("与服务器断开连接")

}


func socket(sock: GCDAsyncSocket!,didReadData data: NSData!,withTag tag: Int) {

// 1 获取客户的发来的数据 ,把 NSData Nsstring

let readClientDataString: Nsstring? = Nsstring(data: data,encoding: NSUTF8StringEncoding)

print(readClientDataString!)


// 2 主界面ui 显示数据

dispatch_async(mainQueue,{

let showStr: NSMutableString = NSMutableString()

showStr.appendString(self.msgView.text)

showStr.appendString(readClientDataString! as String)

showStr.appendString("\n")

self.msgView.text = showStr as String

})

// 3.处理请求,返回数据给客户端 ok

let serviceStr: NSMutableString = NSMutableString()

serviceStr.appendString("ok\n")

clientSocket.writeData(serviceStr.dataUsingEncoding(NSUTF8StringEncoding),withTimeout: -1,tag: 0)

// 4 每次读完数据后,都要调用一次监听数据的方法

clientSocket.readDataWithTimeout(-1,tag: 0)

}

//发送消息按钮事件

@IBAction func sendBtnClick(sender: AnyObject) {

// 1.处理请求,返回数据给客户端 ok

let serviceStr: NSMutableString = NSMutableString()

serviceStr.appendString(self.msginput.text!)

serviceStr.appendString("\n")

clientSocket.writeData(serviceStr.dataUsingEncoding(NSUTF8StringEncoding),tag: 0)

}

}

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...