今天我們來學習下如何在ios中使用socket連線,幸運的是,感謝github,我們找到乙個第三方的開源類庫可以很方便的幫我們實現這個,接下來我們就來實現一下,不過這次雖然有圖形介面,但我們沒有新增任何東西。
首先說一下這裡server端是用python寫的,簡單的寫了乙個,**如下:
[python]view plain
copy
#!/usr/bin/env python
#-*-coding:utf-8-*-
import
socket
defgetinfo():
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()
'connected with'
,addr
client.send(b'hi there'
) ra=sock.recv(1024
ra
client.close()
sock.close()
#end def
if__name__==
'__main__'
: getinfo()
因為mac系統下預設是安裝了python的,正好也能把python練習一下,活學活用。
然後說下我們使用的第三方庫,asyncsocket ,那麼我們去git上把它clone出來。
接著我們就開始寫ios端了,首先新建乙個專案,新增cfnetwork.framework到專案中。
然後在我們的專案中把asyncsocket新增進來:
然後我們在etviewcontroller.h中新增以下**:
[cpp]view plain
copy
#import
#import "asyncsocket.h"
@inte***ce etviewcontroller : uiviewcontroller
接下來是etviewcontroller.m中的**:
[cpp]view plain
copy
#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]view plain
copy
python pyserver.py
之後回車,server就啟動了,然後我們就可以啟動ios模擬器來進行除錯了,可以收到如下圖所示的回應資訊,說明我們成功了:
ok,今天的知識就學到這裡,那麼隨著時間的積累,同時自己也在學tornado,那麼希望可以用python為ios寫出更好的服務端。
2023年06月23日,eric.tang 記
Socket連線 TCP UDP HTTP連線詳解
我們在傳輸資料時,可以只使用 傳輸層 tcp ip協議,但是那樣的話,如果沒有應 用層,便無法識別資料內容,如果想要使傳輸的資料有意義,則必須使用到應用層協議,應用層協議有很多,比如http ftp telnet等,也可以自己 定義應用層協議。web使用http協議作應用層協議,以封裝http文字資...
Socket連線 TCP UDP HTTP連線詳解
我們在傳輸資料時,可以只使用 傳輸層 tcp ip協議,但是那樣的話,如果沒有應 用層,便無法識別資料內容,如果想要使傳輸的資料有意義,則必須使用到應用層協議,應用層協議有很多,比如http ftp telnet等,也可以自己 定義應用層協議。web使用http協議作應用層協議,以封裝http文字資...
Socket程式設計例項
struct sockaddr sockaddr定義的標頭檔案 sys socket.h struct sockaddr in sockaddr in解決了sockaddr 的缺陷,實際上相當於把sockaddr 中的sa data分成了3個部分 sockaddr in 定義的標頭檔案 netine...