[問題] 想請問socket傳檔好像最後一次沒有傳完整QQ
想請問一下我利用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
03/22 21:59, 2F
→
03/23 08:47, , 3F
03/23 08:47, 3F