作者whywhywhy (why)
看板C_Sharp
標題[問題] 想請問socket傳檔好像最後一次沒有傳完整QQ
時間Tue Mar 22 19:35:17 2011
想請問一下我利用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
→ yeo1987:先傳檔案名稱跟大小, 加個分隔字, 後面接著檔案內容 03/22 21:56
→ yeo1987:可以參考RFC1867的做法修改, 試做看看 03/22 21:59
→ whywhywhy:喔喔~那我在去研究一下~謝謝你唷^^ 03/23 08:47