在客户端下载一个非文本文件时非常的慢,最后直到文件占满整个硬盘的空间也下载不完,提示硬盘空间不足,但是下载记事本(纯文本文件)就没有问题..请问高手如何解决?????
代码如下:
服务器端:
private void receive()
{
try
{
 this.Text ="waiting Acceptsocket.................";
socket = listener.AcceptSocket();侦听连接..
               
}
catch{return;}
if(socket.Connected)
{
string str = textBox2.Text;
Byte[] bytee= Encoding.BigEndianUnicode.GetBytes(str.ToCharArray());
socket.Send(bytee,bytee.Length,0);//发送数据..
NetworkStream stream = new NetworkStream(socket);
Byte[] by = new byte[1024];
int i = socket.Receive(by,by.Length,0);//接收数据.
string s = Encoding.BigEndianUnicode.GetString(by);
this.textBox3.AppendText(s);//把接收到的数据显示在textBox3.Text中...
if(s.CompareTo("*** The client has been closed!***")==1)
{
filestream = new FileStream(s.Substring(0,s.IndexOf("\r\n")),FileMode.Open,FileAccess.Read );
Byte[] buffer = new byte[1024];
filestream.Seek(0,SeekOrigin.Begin );
while((number =filestream.Read(buffer,0,1024))!=0)
{
                stream.Write(buffer,0,number);
stream.Flush();
Console.WriteLine(filestream.Position); }
filestream.Close();
}
}
}
private void button1_Click(object sender, System.EventArgs e)
{
try
{
           port = Int32.Parse(this.textBox1.Text);//获取一个端口...
}
catch
{
MessageBox.Show("please enter unmber!"); }
try
{
listener= new TcpListener(port);
listener.Start();
Thread therd = new Thread(new ThreadStart(receive));//创建一个线程,调用一个receive方法....
therd.Start();
}
catch(SocketException ex)
{
MessageBox.Show(ex.Message); }
}
=========================================================================================================================================================================================
客户端:
private void button1_Click(object sender, System.EventArgs e)//连接到服务器端.
{
int port =0;
IPAddress serverIP = IPAddress.Parse("127.0.0.1");
try
{
serverIP =IPAddress.Parse(this.textBox1.Text);//获取服务器端的IP地址. }
catch{MessageBox.Show("please enter ip");}
client =new TcpClient();
try
{
port = Int32.Parse(this.textBox2.Text);//获取一个端口号.
}
catch{MessageBox.Show("please enter unmber!");}
try
{
client.Connect(serverIP,port);//连接到服务器端..
netstream = client.GetStream();
Byte[] bb = new byte[6400];
i = netstream.Read(bb,0,6400);//接收数据.
string s = Encoding.BigEndianUnicode.GetString(bb);把字节转化为字符串..
textBox3.AppendText(s);//把收到的数据显示在textBox3.Text中..
int j = textBox3.Lines.Length;
for(int k =0;k<j -1;k++)
{
comboBox1.Items.Add(textBox3.Lines[k]);//获取服务器端指定路途中的所有文件的路途的字符串.. }
comboBox1.Text = comboBox1.Items[0].ToString(); }
catch(SocketException ex)
{
MessageBox.Show(ex.Message);
}
}
private void download()//一个下载方法..
{
Stream stream = null;
stream = client.GetStream();
int length =1024;
Byte[] bye = new byte[1024];
int size = stream.Read(bye,0,length);
try
{
while(size>0)
{
filestream.Write(bye,0,size);
filestream.Flush();
if(size<1024)
{
break;
size = stream.Read(bye,0,length); }
}
}
catch(SocketException ex)
{
MessageBox.Show(ex.Message);
}
finally
{ filestream.Close();
MessageBox.Show("File Store completed successfully!");
}


}
private void button2_Click(object sender, System.EventArgs e)//下载按钮中的事件..
{
Stream myStream ;
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
 
saveFileDialog1.Filter = "txt files (*.txt)|*.txt|doc(*.doc)|*.doc|All files (*.*)|*.*"  ;
saveFileDialog1.FilterIndex = 2 ;
saveFileDialog1.RestoreDirectory = true ;
saveFileDialog1.Title =saveFileDialog1.FileNames.ToString();
if(saveFileDialog1.ShowDialog()==DialogResult.OK )
{ filestream =new FileStream(saveFileDialog1.FileName ,FileMode.OpenOrCreate,FileAccess.Write);
netstream = client.GetStream();
string down = comboBox1.Text +"\r\n";//获取要下载的文件路途.
Byte[] by = Encoding.BigEndianUnicode.GetBytes(down.ToCharArray());
netstream.Write(by,0,by.Length);
netstream.Flush();
Thread th = new Thread(new ThreadStart(download));
th.Start();//创建一个新的线程..调用一个download方法..
}
}