簡體   English   中英

Python(服務器)和 Java(客戶端)之間的 TCP 套接字中發生了意外的分包和粘連

[英]Unexpected Subcontract and Stick happened in TCP Socket between Python (Server) and Java (Client)

當我同事的 Java(Client) TCP socket 程序向我的 Python(Server) TCP 發送一個 package (500KB~1MB) 時,存在分包套接字程序的情況, 我想知道,這種情況是否有普遍有效的解決方案? 在這種情況下人們通常會做什么? 我認為是否可以手動刷新套接字 function recv(buffer_zone) 請求的緩沖區。如果我能做到,那么程序至少不會粘包。

是我,我已經通過 Head-Tail Package 模式解決了這個問題。
具體地,客戶端在向服務器發送一串數據時,可能會發送一個頭部package,包括戳信息和數據長度。 當服務端收到客戶端發來的頭部package時,就可以知道客戶端要發給服務端的長度,服務端可以為傳入的數據准備相同長度的緩存。 當客戶端向服務端發送尾部(數據)package 時,服務端可以根據其預先知道的數據長度,將數據取出。 這就是我現在的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM