看板 Programming 關於我們 聯絡資訊
※ 引述《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
Neo1978:pak.type 是指標嗎? 61.224.203.155 09/13 15:48
ankasc:你送出的指struct的address,而非內容 58.86.128.60 09/13 18:51
meltice:pak.type是指標 用字元陣列就可以了吧203.204.133.140 09/13 23:21