Swift 3.0 使用Socket進(jìn)行即時(shí)通訊(傻瓜教程)

GCDAsyncSocket這個(gè)框架有接近1萬(wàn)個(gè)star,six six six .
即時(shí)通訊我們用的是TCP協(xié)議進(jìn)行通訊.
準(zhǔn)備:先下載GCDAsyncSocket框架,和到MAC商店下載一個(gè)xSocket測(cè)試工具.
第一步:建橋文件,在橋文件中加入#import "GCDAsyncSocket.h"
第二步: 在對(duì)應(yīng)的 控制器里定義一個(gè)端口,你電腦的IP地址和GCDAsyncSocket對(duì)象

   let serverPort: UInt16 = 8080
    var host = "222.2.11.127"
    var sendSocket:GCDAsyncSocket?

第三步:在viewDidLoad中寫(xiě)連接方法,已進(jìn)入頁(yè)面就使其連接,添加協(xié)議GCDAsyncSocketDelegate

        sendSocket = GCDAsyncSocket(delegate: self, delegateQueue: DispatchQueue.global(qos: .default))
        do {
            try sendSocket?.connect(toHost: host, onPort: UInt16(serverPort))
            print("連接--成功")
        }catch _ {
            print("失敗")
        }

第四步:添加代理方法

    func socket(_ sock: GCDAsyncSocket, didAcceptNewSocket newSocket: GCDAsyncSocket) {
        
        //開(kāi)始接受數(shù)據(jù)
        sendSocket?.readData(withTimeout: -1, tag: 0)
    }
    
    //讀到數(shù)據(jù)后的回調(diào)代理
    func socket(_ sock: GCDAsyncSocket, didRead data: Data, withTag tag: Int) {
        //后臺(tái)給的是字符串的時(shí)候
//        let str = String.init(data: data, encoding: .utf8)
//        print(str as Any)
//        DispatchQueue.main.async {
//            self.labelStr.text = str
//        }
        //后臺(tái)返回的是json的時(shí)候
        let json = JSON.init(data: data)
        print(json)
        
        sendSocket?.readData(withTimeout: -1, tag: 0)
        
    }
    
    func socket(_ sock: GCDAsyncSocket, didConnectToHost host: String, port: UInt16) {
        print(host)
        print("連接成功")
        
        
        //發(fā)起一個(gè)讀取的請(qǐng)求箱靴,當(dāng)收到數(shù)據(jù)時(shí)didReadData才能被回調(diào),設(shè)置一個(gè)分割,也就是讀到某個(gè)data的時(shí)候就會(huì)停止(分隔符即為0A).可以解決丟包問(wèn)題
        
        sendSocket?.readData(to: GCDAsyncSocket.lfData(), withTimeout: -1, tag: 0)
        
//        sendSocket?.readData(withTimeout: -1, tag: 0)
    }
    
    func socketDidDisconnect(_ sock: GCDAsyncSocket, withError err: Error?) {
        print("斷開(kāi)連接")
    }

第五步:使用xSocket建立本地服務(wù)
選擇server

44.png

然后點(diǎn)擊start service運(yùn)行程序就可以進(jìn)行通訊了

55.png

完成!!!!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末隙咸,一起剝皮案震驚了整個(gè)濱河市涂屁,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌侥啤,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,509評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異荚坞,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)菲盾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)颓影,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人懒鉴,你說(shuō)我怎么就攤上這事诡挂。” “怎么了临谱?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,875評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵璃俗,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我悉默,道長(zhǎng)城豁,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,441評(píng)論 1 293
  • 正文 為了忘掉前任抄课,我火速辦了婚禮唱星,結(jié)果婚禮上雳旅,老公的妹妹穿的比我還像新娘。我一直安慰自己间聊,他們只是感情好攒盈,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著甸饱,像睡著了一般沦童。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上叹话,一...
    開(kāi)封第一講書(shū)人閱讀 51,365評(píng)論 1 302
  • 那天偷遗,我揣著相機(jī)與錄音,去河邊找鬼驼壶。 笑死氏豌,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的热凹。 我是一名探鬼主播泵喘,決...
    沈念sama閱讀 40,190評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼般妙!你這毒婦竟也來(lái)了纪铺?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,062評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤碟渺,失蹤者是張志新(化名)和其女友劉穎鲜锚,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體苫拍,經(jīng)...
    沈念sama閱讀 45,500評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡芜繁,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評(píng)論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了绒极。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片骏令。...
    茶點(diǎn)故事閱讀 39,834評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖垄提,靈堂內(nèi)的尸體忽然破棺而出榔袋,到底是詐尸還是另有隱情,我是刑警寧澤塔淤,帶...
    沈念sama閱讀 35,559評(píng)論 5 345
  • 正文 年R本政府宣布摘昌,位于F島的核電站,受9級(jí)特大地震影響高蜂,放射性物質(zhì)發(fā)生泄漏聪黎。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望稿饰。 院中可真熱鬧锦秒,春花似錦、人聲如沸喉镰。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,779評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)侣姆。三九已至生真,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間捺宗,已是汗流浹背柱蟀。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,912評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蚜厉,地道東北人长已。 一個(gè)月前我還...
    沈念sama閱讀 47,958評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像昼牛,于是被迫代替她去往敵國(guó)和親术瓮。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)贰健、插件胞四、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,102評(píng)論 4 62
  • WebSocket-Swift Starscream的使用 WebSocket 是 HTML5 一種新的協(xié)議。它實(shí)...
    香橙柚子閱讀 23,860評(píng)論 8 183
  • 昨晚疼了一晚上伶椿,其實(shí)之前也疼過(guò)撬讽,但是沒(méi)有當(dāng)回事,今天早上起來(lái)仍然疼得不要不要的悬垃,心一狠,直接去長(zhǎng)沙市口腔醫(yī)院拔掉了...
    一然2016閱讀 194評(píng)論 0 0
  • 檸檬還在枝頭訴說(shuō)酸甜甘苍, 桂花也一如既往尝蠕, 香飄四野, 木瓜拼命結(jié)著载庭, 子孫滿(mǎn)堂的美夢(mèng)看彼, 怎么就落幕了呢? 終于要落...
    專(zhuān)抓耗子閱讀 943評(píng)論 0 2
  • 開(kāi)發(fā)一個(gè)軟件,名稱(chēng)為生活醫(yī)生囚聚,這個(gè)軟件的基礎(chǔ)包里是生活中的常見(jiàn)小病靖榕,s
    輕描淡寫(xiě)我的夢(mèng)閱讀 131評(píng)論 0 0