作者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
1F:→ yeo1987:先传档案名称跟大小, 加个分隔字, 後面接着档案内容 03/22 21:56
2F:→ yeo1987:可以参考RFC1867的做法修改, 试做看看 03/22 21:59
3F:→ whywhywhy:喔喔~那我在去研究一下~谢谢你唷^^ 03/23 08:47