帮忙解决下循环为什么跳不出来!在线等
客户端文件已发送完毕,服务器端也接受完毕,但为什么服务器端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里没有当条件满足就跳出循环的语句,程序当然一直在循环了
加条以下的语句就不会出现这情况了
- C# code
if(满足什么条件就跳出循环){ break;}
[解决办法]
顶一下!
[解决办法]
LZ什么问题吗?
”循环为什么跳不出来“指的是哪个循环?
”服务器端while{}后边的语句不执行“又是指什么呀?
[解决办法]
那就是networkStream.Read函数一直没有返回咯,是不是流里面一直都有数据,我好像以前也遇到过,不记得具体是怎么回事了
[解决办法]
如果这样的话,还有什么可说的,只有networkStream.Read函数的返回值一直都不等于0;还有一个问题就是,你代码是死循环,不是通过关闭程序来退出循环吧?
[解决办法]
1、、
tcpListener.Start();
这个打开了,你在哪关闭的???????
2、另外看不懂:
while(true)
{
..........
}
你想让它怎么执行???????
[解决办法]
你这个是listen啊
退出干什么啊,关闭吗
再说了,你没有给出退出条件怎么可能退出呢,除非关闭程序