那Im上工作(這是一個Unix下C多線程非塊套接字服務器)需要從客戶端接收一個文件,並將其廣播到連接到所有其他客戶端的服務器服務器。非塊插座連續文件傳輸
一切都在那不好受林來確定當一個文件被轉移做...因爲即時通訊使用時遇到的問題文件傳輸的recv返回-1時有時無堵塞插座進出口異常的工作(這我是假設是文件的結尾),那麼下一次多個字節進來。
我嘗試破解整個事情將「END」在流的末尾。但是,有時在一行中發送多個文件時,「END」與下一個文件的開頭是同一個recv緩衝區的一部分。甚至是最糟糕的,有時我結束了與EN和下傳的d進來完成一個緩衝。
什麼是避免上述情況的最好辦法,我真的不希望每一次我從套接字循環中接收了一些字節的整個累積緩衝區,以檢查「END」是否是它的一部分,然後適當地剪切......我確定有更好的解決方案來解決這個問題嗎?
在此先感謝!
在發送數據本身之前,爲什麼不先發送文件大小? – 2012-03-03 07:12:12