Swift开发:GCDAsyncSocket通信之TCP服务器

Swift开发:GCDAsyncSocket通信之TCP服务器,第1张

概述1 功能需求:       1 在Swift下使用GCDAsyncSocket实现简单的信息收发功能    2 Mac下为tcp服务器,windows下为tcp客户端  2 效果图: 3 swift代码:需要导入GCDAsyncSocket库文件,可去github下载 import UIKit class ViewController:UIViewController,GCDAsyncSocket

1 功能需求:

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

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

2 效果图:



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

import UIKit


class VIEwController:UIVIEwController,GcdasyncSocketDelegate {


@IBOutlet var startBtn:UIbutton!

@IBOutlet var msgTextVIEw:UITextVIEw!

var serverSocket: GcdasyncSocket!

let serverPort: UInt16 =9050

var clIEntSockets: NSMutableArray!

var startIsSuccessful = false

var mainQueue =dispatch_get_main_queue()

@IBOutlet var inputTextinput:UITextFIEld!

@IBOutlet var sendBtn:UIbutton!

overrIDe func vIEwDIDLoad() {

super.vIEwDIDLoad()

clIEntSockets =NSMutableArray()

msgTextVIEw.backgroundcolor =UIcolor.graycolor()

msgTextVIEw.text ="接收的客户端消息:\n"

}

// 发送消息按钮

@IBAction func sendBtnClick(sender:AnyObject) {

if clIEntSockets.count ==0 {

return

}

let msg = inputTextinput.text!

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

let serviceStr:NSMutableString = NSMutableString()

serviceStr.appendString(msg)

serviceStr.appendString("\n")

let wSocket = clIEntSockets[0]// 此处只使用一个客户端连接

wSocket.writeData(serviceStr.dataUsingEnCoding(NSUTF8StringEnCoding),withTimeout: -1,tag: 0)

}

//开启服务按钮

@IBAction func startServer(sender:AnyObject) {

// 1 初始化 我是mac

serverSocket =GcdasyncSocket()

// 2 设置委托

serverSocket.delegate =self

serverSocket.delegateQueue =dispatch_get_global_queue(0,00)

do {

tryserverSocket.acceptOnPort(serverPort)

startIsSuccessful =true

self.startBtn.enabled =false

print("server start successful!")

}

catch {

startBtn.backgroundcolor =UIcolor.redcolor()

print("server start error!")

}

}

/*

* 有客户端的socket连接到服务器

*/

func socket(srvSocket: GcdasyncSocket!,dIDAcceptNewSocket cSocket: GcdasyncSocket!) {

// 1 保存socket 判断socket是否存在,不存在就添加

if cSocket == nil {

print("clIEnt sock nil")

return

}

if clIEntSockets.containsObject(cSocket) {

print("已经存在!")

return

}

else {

// 不存在,添加

clIEntSockets.addobject(cSocket)

}

// 2 返回消息

let serviceStr:NSMutableString = NSMutableString()

serviceStr.appendString("login successful\n")

cSocket.writeData(serviceStr.dataUsingEnCoding(NSUTF8StringEnCoding),tag: 0)

// 3.监听客户端有没有数据上传

//timeout -1 代表不超时

//tag 标识作用,现在不用,就写0

cSocket.readDataWithTimeout(-1,tag:0)

}

/*

* 读取客户端请求的数据

*/

func socket(cSocket: 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.msgTextVIEw.text)

showStr.appendString(readClIEntDataString!as String)

showStr.appendString("\n")

self.msgTextVIEw.text = showStras String

})

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

let serviceStr:NSMutableString = NSMutableString()

serviceStr.appendString("ok\n")

cSocket.writeData(serviceStr.dataUsingEnCoding(NSUTF8StringEnCoding),tag: 0)

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

cSocket.readDataWithTimeout(-1,tag:0)

}

}

总结

以上是内存溢出为你收集整理的Swift开发:GCDAsyncSocket通信之TCP服务器全部内容,希望文章能够帮你解决Swift开发:GCDAsyncSocket通信之TCP服务器所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存