Swift开发:GCDAsyncSocket通信之TCP 客户端
2016-05-05 17:38
225 查看
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), withTimeout: -1,
tag: 0)
}
}
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), withTimeout: -1,
tag: 0)
}
}
相关文章推荐
- Linux下网络故障诊断
- 在linux中 apache 重写失效(各种模块都开了不启作用。 httpd.conf中是否加载其它配置文件
- Swift开发:GCDAsyncSocket通信之TCP服务器
- MVP+OKHttp 用户登录demo
- Swift 网络请求数据与解析
- Java的异步HttpClient
- HttpClient4.5.2通过POST发送XML
- WSAAsyncSelect基于异步通知的网络socket通信案例一
- UDP连接和TCP连接的异同
- Spring中MultipartHttpServletRequest实现文件上传
- MFC显示网络图片_3
- Jmeter之Badboy录制脚本及简化脚本http请求(三)
- wireshark通过TCP抓包进行确认
- 神经网络
- 一文读懂卷积神经网络
- HttpUploader2 -chrome 45+安装教程
- linux网络常用命令
- C# HttpWebRequest 请求 常出现的问题
- 在C#用HttpWebRequest中发送GET/HTTP/HTTPS请求
- httperf下载