黑马程序员技术交流社区
标题:
为什么键盘输入会一直卡在那里不动??
[打印本页]
作者:
华谦
时间:
2014-8-17 11:40
标题:
为什么键盘输入会一直卡在那里不动??
/*
客户端通过键盘录入用户名
服务端对这个用户进行校验
如果该用户存在,在服务端显示XXX已登陆,
并在客户端显示XXX,欢迎光临
如果该用户不存在,在服务端显示XXX,尝试登陆
并在客户端显示XXX,改用户不存在
最多登陆三次
*/
import java.io.*;
import java.net.*;
class TCPClints1
{
public static void main(String[] args) throws Exception //用户端
{
Socket s = new Socket("192.168.1.103",10006);
BufferedReader bufr = //键盘录入用户名
new BufferedReader(new InputStreamReader(System.in));
PrintWriter out = new PrintWriter(s.getOutputStream()); //获取网络中的输出流
BufferedReader bufIn = //获取网络中的输入流
new BufferedReader(new InputStreamReader(s.getInputStream()));
for (int x = 0; x<3;x++ ) //只允许用户输入三次,三次不对那么跳出循环,不再录入
{
String line = bufr.readLine();
out.println(line);
String str = bufIn.readLine(); //获取服务端返回来的信息
System.out.println("str:"+str);
}
}
}
class TCPServer1 //服务端
{
public static void main(String[] args) throws Exception
{
ServerSocket ss = new ServerSocket(10006);
while(true)
{
Socket s = ss.accept();
new Thread(new TCPThread(s)).start(); //创建不同用户访问服务端线程
}
}
}
class TCPThread implements Runnable //服务端多线程,用于多个用于访问服务端
{
private Socket s;
TCPThread(Socket s)
{
this.s = s;
}
public void run()
{
try
{
for (int x=0;x<3 ; x++)
{
BufferedReader bufrd = new BufferedReader(new FileReader("d:\\用户名.txt")); //读取允许登陆的配置用户文件
BufferedReader bufr = new BufferedReader(new InputStreamReader(s.getInputStream())); //获取网络中的输入流
PrintWriter pw = new PrintWriter(s.getOutputStream()); //获取网络中的输出流,并且自动刷新
String name = bufr.readLine();
String line = null;
boolean flag = false;
while((line=bufrd.readLine())!=null)
{
if(name.equals(line)) //将用户输入的用户名循环比较配置文件,如果有相同的用户名,则标记为true,并跳出循环
{
flag = true;
break;
}
}
if(flag)
{
System.out.println(name+",已登陆");
pw.write(name+",欢迎访问");
break;
}
else
{
System.out.println(name+",尝试登陆");
pw.write(name+",用户名不存在");
}
}
s.close();
}
catch (Exception e)
{
}
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2