今天我們來學習下如何在ios中使用socket連線,幸運的是,感謝github,我們找到乙個第三方的開源類庫可以很方便的幫我們實現這個,接下來我們就來實現一下,不過這次雖然有圖形介面,但我們沒有新增任何東西。
首先說一下這裡server端是用python寫的,簡單的寫了乙個,**如下:
#!/usr/bin/env python
#-*-coding:utf-8-*-
import socket
def getinfo():
address=('127.0.0.1',8888)
sock=socket.socket(socket.af_inet,socket.sock_stream)
sock.bind(address)
sock.listen(5)
client,addr=sock.accept()
print 'connected with',addr
client.send(b'hi there')
ra=sock.recv(1024)
print ra
client.close()
sock.close()
#end def
if __name__=='__main__':
getinfo()
因為mac系統下預設是安裝了python的,正好也能把python練習一下,活學活用。
然後說下我們使用的第三方庫,asyncsocket ,那麼我們去git上把它clone出來。
接著我們就開始寫ios端了,首先新建乙個專案,新增cfnetwork.framework到專案中。
然後在我們的專案中把asyncsocket新增進來:
然後我們在etviewcontroller.h中新增以下**:
#import #import "asyncsocket.h"
@inte***ce etviewcontroller : uiviewcontroller
接下來是etviewcontroller.m中的**:
#import "etviewcontroller.h"
@inte***ce etviewcontroller ()
@end
@implementation etviewcontroller
- (id)initwithnibname:(nsstring *)nibnameornil bundle:(nsbundle *)nibbundleornil
return self;
}- (void)viewdidload
}//建立連線
-(void)onsocket:(asyncsocket *)sock didconnecttohost:(nsstring *)host port:(uint16)port
//讀取資料
-(void)onsocket:(asyncsocket *)sock didreaddata:(nsdata *)data withtag:(long)tag
//是否加密
-(void)onsocketdidsecure:(asyncsocket *)sock
//遇到錯誤時關閉連線
-(void)onsocket:(asyncsocket *)sock willdisconnectwitherror:(nserror *)err
//斷開連線
-(void)onsocketdiddisconnect:(asyncsocket *)sock
- (void)didreceivememorywarning
-(void)dealloc
@end
這些完成了之後呢,我們就可以開始測試了,那麼首先要啟動python寫的server,進入終端,進入到pyserver.py所在的目錄,然後輸入如下命令來啟動server:
python pyserver.py
之後回車,server就啟動了,然後我們就可以啟動ios模擬器來進行除錯了,可以收到如下圖所示的回應資訊,說明我們成功了:
ok,今天的知識就學到這裡,那麼隨著時間的積累,同時自己也在學tornado,那麼希望可以用python為ios寫出更好的服務端。
2023年06月23日,eric.tang 記
第三十二天
多表操作 1 型別 1 對1 1對多 主外來鍵 多對多 中間表 2 笛卡爾積 select from pet p,emp e where p.ren e.empno 3 子查詢 巢狀查詢 將查詢語句嵌入到某個查詢中 例 查詢 張三 所擁有的寵物資訊 select p.from pet p,emp e...
第三十二天
程序 1 什麼是程序 程序指的是乙個正在進行 執行的程式,程序是用來描述程式執行過程的虛擬概念 程序vs程式 程式 一堆 程序 程式的執行的過程 程序的概念起源於作業系統,程序是作業系統最核心的概念,作業系統其它所有的概念都是圍繞程序來 作業系統理論 1.作業系統是什麼?作業系統是乙個協調 管理 控...
打卡第三十二天
mysql grant all privileges on to root localhost identified by some pass with grant option 本地操作的許可權 mysql grant all privileges on to root identified by...