为什么客户端在Dos命名行上按ctrl-C,服务器端控制台上为什么打印2个null

baidu_30484043 2016-08-04 12:05:16
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+"连接失败");
}

}
}
}
...全文
93 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
adfldk 2016-08-04
  • 打赏
  • 举报
回复
抛了2次?....

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧