为什么客户端在Dos命名行上按ctrl-C,服务器端控制台上为什么打印2个null
import java.io.*;
import java.net.*;
class Cilent
{
public static void main(String[] args) throws Exception
{
Socket s=new Socket("192.168.1.8",10009);
BufferedReader bufr=
new BufferedReader(new InputStreamReader(System.in));
PrintWriter pw=new PrintWriter(s.getOutputStream(),true);
BufferedReader bufrin=
new BufferedReader(new InputStreamReader(s.getInputStream()));
for(int x=0;x<3;x++)
{
String line=bufr.readLine();
if(line==null)
break;
pw.println(line);
String info=bufrin.readLine();
System.out.println(info);
if(info.contains("欢迎"))
break;
}
s.close();
bufr.close();
}
}
class Server
{
public static void main(String[] args) throws Exception
{
ServerSocket ss=new ServerSocket(10009);
while(true)
{
Socket s=ss.accept();
new Thread(new UserThread(s)).start();
}
}
}
class UserThread implements Runnable
{
private Socket s;
UserThread(Socket s)
{
this.s=s;
}
public void run()
{
String ip=s.getInetAddress().getHostAddress();
System.out.println(ip+"....connect");
for(int x=0;x<3;x++)
{
try
{
BufferedReader bufrin=
new BufferedReader(new InputStreamReader(s.getInputStream()));
String name=bufrin.readLine();
System.out.println(name);
/*if(name==null)
break;*/
BufferedReader bufr=new BufferedReader(new FileReader("user.txt"));
PrintWriter pw=new PrintWriter(s.getOutputStream(),true);
String userinfo=null;
boolean flag=false;
while((userinfo=bufr.readLine())!=null)
{
if(userinfo.equals(name))
{
flag=true;
break;
}
}
if(flag)
{
System.out.println(name+"以登录");
pw.println(name+"欢迎光临");
break;
}
else
{
System.out.println(name+"尝试登录");
pw.println(name+"用户不存在");
}
s.close();
}
catch (Exception e)
{
throw new RuntimeException(ip+"连接失败");
}
}
}
}