關於socket的疑問

2022-04-13 21:22:00 字數 507 閱讀 3119

一直感覺一端傳送資料,另一端接受資料很不可思議的事情,如果不能即時地讀走會導致什麼後果呢?

其實socket讀出來的資料,你自己看著辦,裡面的資料是什麼格式你自己去解析,使用者可以基於tcp去實現你自己的協議【其實等價於客戶基於ip協議去實現自己的傳輸層協議】,所以可以想想使用者是怎麼實現http協議的,http協議也是有乙個頭的,你會讀出來乙個頭,頭中會寫著後面第幾個欄位是http協議頭,然後第幾個欄位是資料,然後再第幾個欄位是option段等等等等,構築在tcp之上的新的協議,並不是說直接就是資料了

看一段http協議的處理流程就大致知道了嘛,比如nginx,nginx是通過readv去讀取資料的(可以參考:ngx_http_wait_request_handler函式中呼叫recv,recv鉤子中封裝的是readv函式),可以看到整個協議處理的過程中,都是直接然後挨個欄位去分析。所以位元組流就是這樣子啦。那麼對於資料報呢?

如果傳送端不斷傳送資料,然後接收端過了好久才去取,會咋樣呢?

資料報協議

關於 retainCount 的疑問

我在 main.m 裡寫了三個測試例子,就是不明白為什麼輸出的都是 1 別人幫忙測試了下,輸出的是額外的超大的值 nsstring str1 welcome nslog d str1 retaincount nsstring str2 nsstring stringwithstring you ns...

關於scanf的疑問

scanf函式是從標準輸入流 stdin 讀取資料,按照格式說明引數,將資料寫入引數位址所在空間,標準輸入流預設的是鍵盤輸入流,但是,由於作業系統的緩衝區管理機制,從鍵盤上輸入的資料不是直接被scanf函式讀取的,而是暫存在記憶體緩衝區,只有遇到回車鍵的時候,scanf函式才會開始工作,並且,最後輸...

關於sort 的疑問?

對於不同型別的資料從小到大排序可以直接用sort 函式排,但是如果是從大到小排序,就得寫乙個比較函式了,怎麼辦呢?我的第一想法就是利用函式模板寫乙個cmp 函式,如下 所示,但是這串 是通不過編譯的,include include using namespace std template bool ...