iOS byte擷取 socket解析

2021-07-15 06:59:49 字數 694 閱讀 9900

* 細節學習- ios byte陣列的 擷取 socket資料解析*

最近在做socket長連線。遇見一些問題,希望給各位磚友一些參考的資訊

遇見的第乙個問題:

返回的socket資料用nsasciistringencoding 字母解析沒有問題。但是 中文字母就是亂碼。這個問題是由於你socket資訊的編碼格式的問題,例如我的socket資訊 是採用 前9個位元組是固定頭的自定義模式。這9個位元組是用ascii編碼,後邊的內容長度使用utf8來搞得,你直接用ascii解析是亂碼,用utf8是解析不出來的。必須把對應的內容擷取出來。對應的解碼格式就可以了

第二個問題:

因為socket是長連線。所以,如果有的人用oc自帶的rangeofstring方法判斷json來擷取,就會出問題,socket的內容是連著的,所以socket的內容是不會間斷的這種擷取方式會造成socket粘連,解決方法。可採取自定義資訊頭的方式,把資料的長度在資訊頭9個自己返回

第三個問題就是解析:

解析必須從位元組開始來解析,從前9個位元組獲取後邊的命令長度,json長度。

例如獲取data後 要轉成 byte陣列

byte resverbyte = (byte )[data bytes];

等獲取了命令長度 還有 json長度後,可以分割byte陣列來獲取相關資訊

獲取想要的的byte後,可以轉成 data 再轉成nsstring

socket字元流迴圈擷取

場景 socket 客戶端將乙個單向鍊錶序列化後傳送給服務端,服務端將之解析,重新構建單向鍊錶。client.cpp 1 遍歷鍊錶,填充到緩衝區 2char formatbuf listnode p,char buf 100 3 10 memset buf,0,sizeof buf 11while ...

wstring 擷取 string擷取和拼接

nsstring string 11111111111 nsstring str1 string substringtoindex 3 nslog str1 專門擷取字串的一塊從第3位開始,長度為4 nsstring str2 string substringwithrange nsmakerang...

mysql 擷取 mysql 字串擷取

mysql 字串擷取函式 left right substring substring index 還有 mid substr 其中,mid substr 等價於 substring 函式,substring 的功能非常強大和靈活。1.字串擷取 left str,length mysql selec...