各位好,小弟又来求助了flag2是一个全局变量一个serversocket,我用
flag1=true;
while(flag1)
{
if(flag2==false)
{flag1=false;
continue;
}
else
{
Socket s = null;
s=serversocket.accept();
//下面的代码是用线程去处理s
}
}我在另外一段代码中将flag2置为false,但在这之后,还可以有一个客户端连进来,这是为什么呢,flag2一旦为false后不是就应该跳出这个while了吗,就执行不到serversocket.accept()了呀请各位指教
flag1=true;
while(flag1)
{
if(flag2==false)
{flag1=false;
continue;
}
else
{
Socket s = null;
s=serversocket.accept();
//下面的代码是用线程去处理s
}
}我在另外一段代码中将flag2置为false,但在这之后,还可以有一个客户端连进来,这是为什么呢,flag2一旦为false后不是就应该跳出这个while了吗,就执行不到serversocket.accept()了呀请各位指教
代码走到这行s=serversocket.accept(); 就会一直处于等待连接状态,直到有一个连接来,它才继续往下走。 所以呢,部分服务器一般是强杀进程。
你断点或者打出信息看看 flag2的值是否在改变前 这个客户端已经进入循环了
话说 if(flag2==false) boolean 不需要这么写 if(!flag2)
但是上一次的serversocket.accept()运行之后,他会一直等待到接受下一次请求,循环等待。
因此它是先接受请求,然后再进入下一个循环,执行flag1=false;continue;再结束循环。
interrupt()这个方法不是一个结束进程的好方法,建议尽量不要用
此时有什么办法 能将serversocket关闭吗,我一关就报错