tcp接收文件问题

我爱小土豆 2014-07-04 12:16:19
public void ReceiveMsg( TcpClient tmpTcpClient )
{
try
{
if ( tmpTcpClient.Connected )
{
NetworkStream ns = tmpTcpClient.GetStream( );
byte[] receiveBytes = new byte[tmpTcpClient.ReceiveBufferSize];
FileStream fs = new FileStream( "D:\\aa.png" , FileMode.Create );
bool isfirst = true;
int i = 0;
while ( ns.Read( receiveBytes , 0 , receiveBytes.Length ) > 0 )
{

if ( isfirst )
{
fs.Write( receiveBytes , 4 , receiveBytes.Length - 4 );
isfirst = false;
}
else
{
fs.Write( receiveBytes , 0 , receiveBytes.Length );
}
}
if ( fs != null )
{
fs.Dispose( );
}
}
}
catch ( Exception ex )
{
MessageBox.Show( "出问题了" );
}
}


求大神帮我看看 我这是用来接返回的二进制图片流的,有时候保存的图片是能看到的,但是也只是一半,有时候保存的图片直接看不到,而且while循环玩了之后 下面的程序也不走下面的if.不知道是什么情况 卡了几天了求大神
...全文
119 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
我爱小土豆 2014-07-04
  • 打赏
  • 举报
回复
服务端返回的数据是分两次 第一次先返回一个ok\r\n 然后再返回png图片的二进制流
於黾 2014-07-04
  • 打赏
  • 举报
回复
而且发给你的ok\r\n明显是数据头,而不是文件头,你把它写文件里想干什么
於黾 2014-07-04
  • 打赏
  • 举报
回复
fs.Write( receiveBytes , 4 , receiveBytes.Length - 4 ); 这是要闹哪样 读出来的数据放到索引0-3,然后你把索引4开始的数组写入文件,这不是空的么

111,094

社区成员

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

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

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