mfc,c++,vs2015,使用socket,tcp網路編程,發送端sendX個資料,把接收端的緩沖區大小設定為Y,(X大于Y),發送端執行send函式后,接收端不執行recv,那么請問如何知道發送方緩沖區還有哪些資料沒有發送?以及這些資料的大小?發送方能不能自己呼叫哪個函式來實作上述疑問,而不需要接收方來告訴他已經收到了什么,他自己再去減!請大神幫忙,謝謝!
uj5u.com熱心網友回復:
按 幀頭+長度+資料+校驗+幀尾的方式 定個傳輸協議, 發送和接收都按協議就很容易做到uj5u.com熱心網友回復:
肯定是有其他問題,否則你要send,就會recvtcp協議,能保證你接收到的資料的順序和你發送的順序一致(不考慮丟包)。
但是,不保證每一次recv都能接收到完整的一個資料包,也不能保證每一次recv都只接收到一個資料包。
在實際發送程序中,會對你發送的包進行拆分或者合并。
所以你必須使用一個應用層協議來讀取資料,可以用已有的通用協議,也可以自定義。
順便說一句,以后如果開發大型專案,還得考慮有人搗亂,發送例外資料的情況。
uj5u.com熱心網友回復:
這個需要你自己上層定一個協議,告訴資料的大小,然后再按這個大小來接收后續的資料~uj5u.com熱心網友回復:
send的回傳值會告訴你實際進入協議(發送)的大小, 通訊雙方都會緩沖, 如從A 發到BA 有發送緩沖 假設為 2
B 有接識訓沖,假設為 4
在A 使用send 來發送10個, 如果B不recv, 那么情況一般就是
send回傳 6, 有4個已經發送到B的緩沖, 有2個在本地緩沖
uj5u.com熱心網友回復:
這是TCP/IP的基礎常識了,建議先看下基本概念,一點一點來!tcp/ip詳解轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/45364.html
標籤:網絡編程
上一篇:漸變三角形
下一篇:新手上路
