还是PDA发送图片给服务器

sophia__rp 2009-08-15 11:46:56
前几天发了个贴,没得到解决,经多次修改,有一点点眉目,还是有问题,继续问。
现在的情况是,PDA发送图片后,如果服务器接收图片的循环逐句调试,就能正确显示图片;不逐句调试则接收到的图片大小比原图片大,不能正确显示。比如发送32k的图片,直接接收的话可能是36k,40k,44k……
部分代码:
PDA端:

NetworkStream ns = Client.GetStream();
FileStream fs = new FileStream(FileName, FileMode.Open);
byte[] imagedata = new byte[4096];
while ( fs.Read(imagedata, 0, 4096) != 0)
{
ns.Write(imagedata, 0, imagedata.Length);
ns.Flush();
imagedata = new byte[4096];
}
fs.Close();
ns.Close();
Client.Close();

服务器端:

TcpClient client = listener.AcceptTcpClient();
NetworkStream ns = client.GetStream();
FileStream filestream = new FileStream(Application.StartupPath + "\\test.jpg", FileMode.OpenOrCreate, FileAccess.Write);
byte[] reccimg = new byte[2048];
int byteread = ns.Read(reccimg, 0, reccimg.Length);
while (byteread != 0)
{
filestream.Write(reccimg, 0, reccimg.Length);
ns.Flush();
byteread = ns.Read(reccimg, 0, reccimg.Length);
}
filestream.Close();
ns.Close();
client.Close();

怎么样能保证接收到的是正确的呢?多谢多谢~~
...全文
53 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
sophia__rp 2009-08-20
  • 打赏
  • 举报
回复
还有,就是逐句循环的话得到的就是对的,让它自己去执行就有错误……
sophia__rp 2009-08-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 yangyanli 的回复:]
ns.Write(imagedata, 0, imagedata.Length);

你这句有问题.imagedata.Length是固定的4096,所以你应该改成Read的长度
[/Quote]
所以用了循环,后来又做了改进,PDA端首先获得图片长度发送给服务器,服务器端循环读到此长度时止,还是不行。
再后来考虑到PDA内存可能有限制,将每次发送的长度缩短到几十B,还是有问题。。。
yangyanli 2009-08-20
  • 打赏
  • 举报
回复
ns.Write(imagedata, 0, imagedata.Length);

你这句有问题.imagedata.Length是固定的4096,所以你应该改成Read的长度
sophia__rp 2009-08-20
  • 打赏
  • 举报
回复
都试了,还是不行
不读取多余的内容了,但是接收到的图片一般情况下只有上部分是好的,下部分是错误的,像是被划过的碟片放出来的图像一样……

ps:
没有答案是不是也得结贴呢?
sophia__rp 2009-08-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sp1234 的回复:]
你可以先用前4个字节来表示文件大小,后面才是文件内容。
[/Quote]
好的好的,多谢~试试
[Quote=引用 1 楼 sp1234 的回复:]
接收时,不要读取多余的内容。
[/Quote]
这个怎么保证呢?我上面的循环不能做到么?还请再提点一下~~
  • 打赏
  • 举报
回复
你可以先用前4个字节来表示文件大小,后面才是文件内容。

接收时,不要读取多余的内容。

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧