网络编程--TCP客户端并发登陆
2015-12-03 12:34
597 查看
/* 客户端通过键盘录入用户名。 服务端对这个用户名进行校验。 如果该用户存在,在服务器端显示xxx,已登录。 并在客户端显示xxx,欢迎光临。 如果该用户不存在,在服务端显示xxx,尝试登录。 并在客户端显示xxx,该用户不存在。 最多就登录三次。 --自建立users.txt。 */ //客户端 import java.io.*; import java.net.*; import java.util.ArrayList; import java.util.List; class LoginClient { public static void main(String[] args) throws Exception { Socket s = new Socket("192.168.1.254", 5000); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); PrintWriter pwOut = new PrintWriter(s.getOutputStream(), true); BufferedReader brIn = new BufferedReader(new InputStreamReader( s.getInputStream())); for (int i = 0; i < 3; i++) { String line = br.readLine(); if (line == null) break; pwOut.println(line); String info = brIn.readLine(); System.out.println("info" + info); if (info.contains("欢迎")) break; } br.close(); s.close(); } } // 服务端 class LoginServer { public static void main(String[] args) throws Exception { ServerSocket ss = new ServerSocket(5000); 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 + "......Connected"); try { List<String> list = new ArrayList<String>(); list = readUsers(); for (int i = 0; i < 3; i++) { BufferedReader brIn = new BufferedReader(new InputStreamReader( s.getInputStream())); PrintWriter pwOut = new PrintWriter(s.getOutputStream()); String name = brIn.readLine(); if(name == null) break; boolean flag = false; if (list.contains(name)) { flag = true; break; } if (flag) { System.out.println(name + ",已登录"); pwOut.println(name + ",欢迎光临"); break; } else { System.out.println(name + ",尝试登录"); pwOut.println(name + ",用户名不存在"); } } s.close(); } catch (Exception e) { throw new RuntimeException(ip + "校验失败!"); } } private List<String> readUsers() throws Exception { List<String> list = new ArrayList<String>(); BufferedReader br = new BufferedReader(new FileReader("users.txt")); String line = null; while ((line = br.readLine()) != null) { list.add(line); } return list; } }
相关文章推荐
- 网络编程--TCP复制文件
- 网络编程--TCP相关
- 网络编程--UDP相关
- 10002---Meta标签中name和http-equiv的区别
- 通过java.net.URLConnection发送HTTP请求的方法
- 文件上传的一些思路
- vmware虚拟机redhat6.5的网络配置
- 网络层提供的服务
- 最老程序员创业开发实训13---Android---网络请求与异步任务
- 网络层:指引
- win7 tcp/ip4属性按钮灰色,无法修改IP的解决方案
- rhel6 PXE网络装机 Kickstart无人值守安装
- 修改为http协议
- 更安全的HTTPS
- Android DefaultHttpClinet 重定向
- ajax的基础:XMLHttpRequest对象
- java必学必会之网络编程
- 【python】网络编程-SocketServer 实现客户端与服务器间非阻塞通信
- MapServer 之 发布网络要素服务(WFS-Web Feature Service)
- 网络编程