Re: [問題] winsock的問題

看板Programming作者 (NEW)時間18年前 (2006/09/13 13:02), 編輯推噓2(201)
留言3則, 3人參與, 最新討論串3/3 (看更多)
※ 引述《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
pak.type 是指標嗎?
09/13 15:48, 1F

09/13 18:51, , 2F
你送出的指struct的address,而非內容
09/13 18:51, 2F

09/13 23:21, , 3F
pak.type是指標 用字元陣列就可以了吧
09/13 23:21, 3F
文章代碼(AID): #151v3XJo (Programming)
討論串 (同標題文章)
文章代碼(AID): #151v3XJo (Programming)