日期:2014-05-18  浏览次数:20770 次

帮忙解决下循环为什么跳不出来!在线等
客户端文件已发送完毕,服务器端也接受完毕,但为什么服务器端while{}后边的语句不执行?

代码如下:
private void Listen()
  {
  //创建一个tcpListener对象,此对象主要是对给定端口进行侦听
  tcpListener = new TcpListener(13000);
  //开始侦听
  tcpListener.Start();
  //返回可以用以处理连接的Socket实例
  socketForClient = tcpListener.AcceptSocket();
  byte[] bb = new byte[1024];
  try
  {
  //如果返回值是"true",则产生的套节字已经接受来自远方的连接请求
  if (socketForClient.Connected)
  {
  AddList("已经和客户端成功连接!");
  while (true)
  {
  //创建networkStream对象通过网络套节字来接受和发送数据

  int i = 0;
  networkStream = new NetworkStream(socketForClient);
  streamWriter = new StreamWriter(networkStream);
   
  FileStream fs = new FileStream("f:\\a\\"+i+"a.jpg" , FileMode.OpenOrCreate, FileAccess.Write);
   
  int tt = 0;
  while ((tt = networkStream.Read(bb, 0, 1024)) != 0)
  {
  fs.Write(bb, 0, tt);
  fs.Flush();
  }
  fs.Close();
  i++;
  try
  {  
  AddList("往客户端反馈信息: ");
  //往当前的数据流中写入一行字符串
  streamWriter.WriteLine("传送完毕!");
  //刷新当前数据流中的数据
  streamWriter.Flush();  
   
  }
  catch
  {
 
  }
   
  }
  }
  }
  catch (Exception ey)
  {
  MessageBox.Show(ey.ToString());
  }
  }

------解决方案--------------------
不附合条件肯定不执行了,你那个bb数组里好像没东西吧................?
------解决方案--------------------
while (true)
我看不太懂,这样的循环会结束吗?
------解决方案--------------------
try 
{
AddList("往客户端反馈信息: "); 
//往当前的数据流中写入一行字符串 
streamWriter.WriteLine("传送完毕!"); 
//刷新当前数据流中的数据 
streamWriter.Flush();


catch 

  




 catch 里面放点东西看看有没有运行到那里去.

因为这里用到了try所以有错误也不会提示..的.
------解决方案--------------------
你这当然一直死循环了...WHILE里没有当条件满足就跳出循环的语句,程序当然一直在循环了
加条以下的语句就不会出现这情况了