[問題] 想請問socket傳檔好像最後一次沒有傳完整QQ

看板C_Sharp作者 (why)時間14年前 (2011/03/22 11:35), 編輯推噓0(003)
留言3則, 2人參與, 最新討論串1/1
想請問一下我利用socket傳圖片 但是最後好像都沒有傳完整 就是圖片最後面的部份都會是黑的 可是如果我在client傳完後就close socket的話就不會這樣 請問這是為什麼呢??? 另外再請問一下NetworkStream.read()是不是只有在client socket關閉後 才會return 0呢 還有請問有沒有比較好得方法可以在傳檔的時候可以知道檔案的類型呢以及檔名呢??? 是要在開一個socket來告訴server這些資料嗎??? 還是在傳之前告訴server??? 麻煩知道的大大可以教我 謝謝^^ 附上我傳檔的code精簡版~ server: NetworkStream ns=new NetworkStream(client);//client是accept後所得的socket FileStream file = new FileStream(@"C:\testS.jpg", FileMode.Create); BinaryWriter bw = new BinaryWriter(file); for (; ; ) { Byte[] accData = new byte[1024]; a = ns.Read(accData, 0, accData.Length); bw.Write(accData); if (a == 0) { bw.Close(); file.Close(); break; } } client: Byte[] accData = new byte[1024]; long a; FileStream fs = new FileStream(fileTextBox.Text, FileMode.Open); BinaryReader br = new BinaryReader(fs); for (; ; ) { a = br.Read(accData, 0, accData.Length); scComm.Send(accData);//scComm是clientconnect的socket if (a == 0) { br.Close(); fs.Close(); break; } } } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.87.188

03/22 21:56, , 1F
先傳檔案名稱跟大小, 加個分隔字, 後面接著檔案內容
03/22 21:56, 1F

03/22 21:59, , 2F
可以參考RFC1867的做法修改, 試做看看
03/22 21:59, 2F

03/23 08:47, , 3F
喔喔~那我在去研究一下~謝謝你唷^^
03/23 08:47, 3F
文章代碼(AID): #1DY8buFT (C_Sharp)