socket文件传输问题,高手帮忙看看 我用filestream读写文件,用networkstream发送接收文件,为何接收到的文件和原文件大小不一致呢?而且有时会显示接收到的文件已损坏,这会是什么原因造成的呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 //发送文件 private void sendBinary(ref Socket socket, string filePath) { try { long readcount = fi.Length / 10240; long byteremain = fi.Length % 10240; byte[] bb = new byte[10240]; int number; stream = new NetworkStream(socket); for (long count1 = 1; count1 <= readcount; count1++) { number = filestream.Read(bb, 0, bb.Length); stream.Write(bb, 0, bb.Length); stream.Flush(); bb = new byte[10240]; } if (byteremain != 0) { bb = new byte[byteremain]; filestream.Read(bb, 0, bb.Length); stream.Write(bb, 0, bb.Length); stream.Flush(); } filestream.Close(); stream.Close(); richTextBox1.AppendText("文件发送完毕" + "\r\n"); toolStripStatusLabel1.Text = "就绪"; } catch (Exception f) { MessageBox.Show(f.ToString(), "sendbinary errer"); }//接收文件 private void getBinary(ref Socket socket, string filePath) { try { filestream = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.Write); byte[] bb = new byte[10240]; NetworkStream netStream = new NetworkStream(socket); long readnumber; long currentread = 0; long readcount = Convert.ToInt64(str[1]) / 10240; long byteremain = Convert.ToInt64(str[1]) % 10240; while ((readnumber = netStream.Read(bb, 0, bb.Length)) > 0 && currentread != readcount) { currentread++; filestream.Write(bb, 0, bb.Length); filestream.Flush(); if (currentread == readcount) { if (byteremain != 0) { bb = new byte[byteremain]; netStream.Read(bb, 0, bb.Length); filestream.Write(bb, 0, bb.Length); filestream.Flush(); } break; } } filestream.Close(); netStream.Close(); richTextBox1.AppendText("接收文件成功\r\n"); filesend = false; } catch (Exception f) { richTextBox1.AppendText("接收文件时错误" + f.ToString() + "\r\n"); } } 如何将textbox中的信息写入text文件并保存 c#截取字符串 重复怎么弄? WPF多窗口切换问题 求助字符串转换 又是一个简单的问题~~~~~ - -! 用javascript传回来的值如何赋值给cs文件里定义的变量 如何去掉datagrid中的下划线 怎样在C#的winfrom中利用datagrid控件来增加记录。 挑战各位高手!! chart控件,X轴刻度值,小数位数如何控制? 高手来帮忙 急!!!!! 一个不知道难不难的问题,这样的函数如何定义?
private void sendBinary(ref Socket socket, string filePath)
{
try
{
long readcount = fi.Length / 10240;
long byteremain = fi.Length % 10240;
byte[] bb = new byte[10240];
int number;
stream = new NetworkStream(socket);
for (long count1 = 1; count1 <= readcount; count1++)
{
number = filestream.Read(bb, 0, bb.Length);
stream.Write(bb, 0, bb.Length);
stream.Flush();
bb = new byte[10240];
}
if (byteremain != 0)
{
bb = new byte[byteremain];
filestream.Read(bb, 0, bb.Length);
stream.Write(bb, 0, bb.Length);
stream.Flush();
}
filestream.Close();
stream.Close();
richTextBox1.AppendText("文件发送完毕" + "\r\n");
toolStripStatusLabel1.Text = "就绪";
}
catch (Exception f)
{
MessageBox.Show(f.ToString(), "sendbinary errer");
}
//接收文件
private void getBinary(ref Socket socket, string filePath)
{
try
{
filestream = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.Write);
byte[] bb = new byte[10240];
NetworkStream netStream = new NetworkStream(socket);
long readnumber;
long currentread = 0;
long readcount = Convert.ToInt64(str[1]) / 10240;
long byteremain = Convert.ToInt64(str[1]) % 10240;
while ((readnumber = netStream.Read(bb, 0, bb.Length)) > 0 && currentread != readcount)
{
currentread++;
filestream.Write(bb, 0, bb.Length);
filestream.Flush();
if (currentread == readcount)
{
if (byteremain != 0)
{
bb = new byte[byteremain];
netStream.Read(bb, 0, bb.Length);
filestream.Write(bb, 0, bb.Length);
filestream.Flush();
}
break;
}
}
filestream.Close();
netStream.Close();
richTextBox1.AppendText("接收文件成功\r\n");
filesend = false; }
catch (Exception f)
{
richTextBox1.AppendText("接收文件时错误" + f.ToString() + "\r\n");
}
}