我在QT中進行套接字編程,我必須設計一個通過TCP/IP傳輸數據的協議。通過套接字修改數據包大小
現在我的協議設計很簡單。它以一種方式發送命令,每寫入一次,寫入套接字的數據的第一個字節就是命令。因此,無論何時使用socket-> write(「CDATA」)寫入第一個字節,此時的「C」將意味着服務器執行某些操作的命令。
我只想知道一件事,即寫入是否會分解爲服務器上的多次讀取?我知道服務器上會有一個用於讀取的緩衝區大小。但是,當寫入處於服務器的緩衝區限制內時,客戶機上的socket-> write()是否可以在服務器上的多次讀取中接收?
要清除此問題,我將給出一個示例假設服務器上的套接字的緩衝區讀取大小爲4096字節。客戶端將套接字寫入(「CDATA」)到服務器。現在有沒有可能的服務器會收到多於一個讀取?因爲我在服務器上有一個while循環:
while{
char str[] = socket->read();
// What is the coomand in the first byte
if(str[0] == "C"){
// Do something
}
}
如果由客戶端發送的數據在一個以上的讀取(即使客戶端發送它在一個寫)收到我的協議設計將失敗。
由於您對大寫單詞的使用不當,我現在試圖解碼您的消息可能包含的任何幫助。不要擔心人工登錄名是否正確 – Wug