Re: [問題] winsock的問題
※ 引述《hobo.bbs@bbs.ccns.ncku.edu.tw (風薰 人醉)》之銘言:
: ※ 引述《MLP2007.bbs@ptt.cc (NEW)》之銘言:
: > 最近用winsock模擬P2P檔案傳輸的功能
: > socket用block模式
: > 發送端開thread
: > 作fread 然後send
: > 接收端也開thread
: > 作recv 然後fwrite
: > 發現recv接收到的packet內容常常是無效的
: > 也就是和發送端丟出的內容不一致
: > 導致程式錯誤
: > 後來想說在send和recv之前用Sleep來作delay
: > 情況改善很多
: > 但是如果同時傳多個檔案
: > 有時recv收到的packet還是會發生錯誤
: > 請問這是什麼緣故?
: 如果是自己要處理 packet 的話,在單一 thread 下要傳多個檔案
: 你需要自己再包一層,來分別不同的檔案
: 如果只是要傳檔案,可以參考 FTP 來寫,除非你有其它的需求
: 可以詳述一下你說的無效封包是什麼樣的? 長度不合? 編碼錯誤?
我對每一個檔案 都開一個thread 用一個個別的socket來傳輸
無效的封包是表示不是我所預期的格式
例如 傳送端
struct Packet pak;
pak.type="%FS%"
pak.size=5000
send(sock ,&pak ...);
接收端
struct Packet pak;
recv(sock ,&pak ...);
pak.type 和 pak.size並不是預期得到的 %FS%, 5000
而是random值
如果有興趣的話 把e-mail告訴我
我mail source code 給你看看吧
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.167.185.108
推
09/13 15:48, , 1F
09/13 15:48, 1F
推
09/13 18:51, , 2F
09/13 18:51, 2F
→
09/13 23:21, , 3F
09/13 23:21, 3F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):
Programming 近期熱門文章
PTT數位生活區 即時熱門文章