Linux下怎么用read或recv函數完全接收socket發來的數據?


int recv(int sockfd, void* buffer, int len, unsigned int flags)

對方發來的數據是一包一包來的,就是說對方發送一個完整的信息時,多次調用send()函數,我怎么才能全部接收這些send()發來的數據呢?

3 个解决方案

#1


tcp還是udp呢?udp的話要判斷是否丟包了
每次收包的時候,把收到的數據放到另一個臨時緩沖區里

#2


TCP是面向流的協議,沒有邊界的,需要你自己定義。
例如可以在報頭加個長度字段,或者在報文的末尾添加結束符

#3


接收的時候根據報文長度之類的信息,不斷調用recv,直到接收完畢為止

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com