在千锋学习的第34天
努力努力在努力,坚持坚持再坚持!!!加油
今天我学习ServerScoket和Scoket应用交互

登录注册案例
注册的用户信息会存在properties文件中

package com.qf.day4.RegAndLogin;import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;public class CLient {public static void main(String[] args)throws Exception {Scanner sc = new Scanner(System.in);int str = 0;do{System.out.println("1.注册 2. 登录 0.退出");str = sc.nextInt();switch(str){case 1:reg();break;case 2:login();break;default:break;}          }while(str != 0);System.out.println("程序退出了");}//注册public static void reg() throws Exception{//1.链接服务端Socket client = new Socket("192.168.1.104",8888);//2.获得流BufferedReader br = new BufferedReader(new InputStreamReader(client.getInputStream(),"UTF-8"));PrintWriter pw = new PrintWriter(new OutputStreamWriter(client.getOutputStream(),"UTF-8"));Scanner sc = new Scanner(System.in);System.out.println("注册.......");System.out.println("请输入用户名:");String user1 = sc.next();System.out.println("请输入密码:");String pass = sc.next();String str = user1 + "#"+pass;//3.提交用户信息pw.println(str);pw.flush();//4.接收服务端的结果String str1 = br.readLine();System.out.println(str1);br.close();pw.close();client.close();}//登录public static void login() throws Exception{//连接服务端Socket client = new Socket("192.168.1.104",9999);//2.获得流BufferedReader br = new BufferedReader(new InputStreamReader(client.getInputStream(),"UTF-8"));PrintWriter pw = new PrintWriter(new OutputStreamWriter(client.getOutputStream(),"UTF-8"));Scanner sc = new Scanner(System.in);System.out.println("登录.......");System.out.println("请输入用户名:");String user1 = sc.next();System.out.println("请输入密码:");String pass = sc.next();String str = user1 + "#"+pass;//3.提交用户信息pw.println(str);pw.flush();//4.接收服务端的结果String str1 = br.readLine();System.out.println(str1);br.close();pw.close();client.close();}
}
package com.qf.day4.RegAndLogin;import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Properties;public class Server {//服务端持有properties文件private Properties userPros;public Server(){userPros = new Properties();//Map体系下的。 Key和Value都是String//指向信息配置文件File file = new File("user.Properties");try {//判断该文件在该路径下存在吗if(file.exists()){//文件存在//把properties文件里的内容通过字符流加载到properties集合里userPros.load(new FileReader(file));}else{//没有我吗,我们就创建了他file.createNewFile();}} catch (Exception e) {e.printStackTrace();} }//注册线程public void regs(){try {ServerSocket server = new ServerSocket(8888);System.out.println("注册服务器启动");while(true){Socket client = server.accept();RegThread reg = new RegThread(userPros,client);reg.start();}} catch (IOException e) {e.printStackTrace();}}//登录线程public void login(){try {ServerSocket server = new ServerSocket(9999);System.out.println("登录服务器启动");while(true){//以下代码为,有一个客户端访问,我们获取客户端后,通知登录线程执行登录的操作,然后循环到等待代码,等待下一个客户端的访问Socket client = server.accept();//这是等待客户端访问,获取到客户端才能往下执行,否则继续等待客户端的访问LoginThread reg = new LoginThread(userPros,client);reg.start();}} catch (IOException e) {e.printStackTrace();}}}
package com.qf.day4.RegAndLogin;import java.io.BufferedReader;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Properties;public class RegThread extends Thread {private Properties userPros;private Socket client;public RegThread(Properties userPros, Socket client) {super();this.userPros = userPros;this.client = client;}@Overridepublic void run() {//创建输出输入流BufferedReader br;PrintWriter pw;try {br = new BufferedReader(new InputStreamReader(client.getInputStream(),"UTF-8"));pw = new PrintWriter(new OutputStreamWriter(client.getOutputStream(),"UTF-8"));//4.接收数据。。。zhangsan#123String str = br.readLine();String[] str1 = str.split("#");String username = str1[0];String password = str1[1];//对用户名做判断,判断userPros集合中有没有username相同的键值if(userPros.containsKey(username)){pw.println("用户已存在");pw.flush();}else{//不存在,先存在userPros集合里。在存到文件里,相当于putuserPros.setProperty(username, password);//将集合加载到文件中去userPros.store(new FileWriter("user.Properties"), "用户");pw.println("注册成功");pw.flush();}br.close();pw.close();client.close();} catch (Exception e) {e.printStackTrace();} }}
package com.qf.day4.RegAndLogin;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Properties;public class LoginThread extends Thread{private Properties userPros;private Socket client;public LoginThread(Properties userPros, Socket client) {super();this.userPros = userPros;this.client = client;}@Overridepublic void run() {try {       //创建输出输入流BufferedReader br = new BufferedReader(new InputStreamReader(client.getInputStream(),"UTF-8"));PrintWriter pw = new PrintWriter(new OutputStreamWriter(client.getOutputStream(),"UTF-8"));//4.接收数据。。。zhangsan#123String str = br.readLine();String[] str1 = str.split("#");String username = str1[0];String password = str1[1];//对用户名做判断,判断userPros集合中有没有username相同的键值if(userPros.getProperty(username) != null){if(userPros.getProperty(username).equals(password)){pw.println("登陆成功");pw.flush();}else{pw.println("密码错误");pw.flush();}}else{pw.println("用户名错误");pw.flush();}br.close();pw.close();client.close(); } catch (Exception e) {e.printStackTrace();} }
}
package com.qf.day4.RegAndLogin;public class Qidong {public static void main(String[] args) {Server ser = new Server();//两个匿名内部类线程,同时把我们的注册和登录功能运行起来new Thread(){public void run() {ser.regs();};}.start();new Thread(){public void run() {ser.login();};}.start();}}

千锋逆战班,网络编程应用相关推荐

  1. 千锋逆战班学习第二十五天

    千锋逆战班学习第25天 努力或许没有收获,但不努力一定没收获,加油. 今天我学了Java课程的集合. 中国加油!!!武汉加油!!!千锋加油!!!我自己加油!!! 4.有如下代码: public cla ...

  2. 千锋逆战班学习第二十三天 集合练习(一)

    千锋逆战班 在千锋"逆战"学习第23天, 每个人生阶段都需要努力去扮好自己的角色,越努力越轻松,越坚强越幸运! 加油! 2(List)有如下代码 import java.util. ...

  3. 千锋逆战班学习日志Day47

    千锋逆战班学习第47天 表单标签 CSS介绍 二.CSS和HTML结合 2.1CSS和HTML结合之内联结合 2.2CSS与HTML结合之内部部结合 2.3CSS和HTML结合之外部结合 三.访问路径 ...

  4. 千锋逆战班学习第二十四天

    千锋逆战班 在千锋"逆战"学习第24天, 每个人生阶段都需要努力去扮好自己的角色,越努力越轻松,越坚强越幸运! 加油! 1(Object类)有下面代码 interface IA{v ...

  5. 1903java全套_#千锋逆战班,java1903#

    在千锋"逆战"学习第17天 SpringMVC运行流程: SpringMVC基础配置: 1.web.xml: dispatcherServlet / 2.controller层方法 ...

  6. 千锋逆战班,网络编程

    在千锋学习的第33天 努力努力在努力,坚持坚持再坚持!!!加油 今天我学习了网络的划分层次,以及其中的TCP和IP协议,学习了IntAddress类和ServerScoket和Scoket 1.填空: ...

  7. #千锋逆战班,拼搏永向前#

    在千峰"逆战"学习第十一天 如果有天我们湮没在人潮之中,庸碌一生,那是因为我们没有努力要活得丰盛 今天我学习了一下内容: 1.什么是JSP 2.JSP的语法 3.JSP的指令 4. ...

  8. 千锋逆战班,css注册案例

    千锋学习的第四十八天, 不积跬步无以至千里,不积小流无以成江河: 注册案例代码: <!DOCTYPE html> <html><head><meta char ...

  9. #千锋逆战班,接口回调#

    在千锋学习的第十九天, 每个人生阶段都需要努力去扮演好自己的角色,越努力,越轻松,越坚强越幸运,加油! 中国加油!武汉加油,千锋加油!我自己加油! 导入java.lang.Comparable方法来对 ...

最新文章

  1. ssh连接卡在【To escape to local shell, press ‘Ctrl+Alt+]‘.】的解决方法
  2. ios时间相差多少天_IOS计算某个日期和当前时间的天数差
  3. ubuntu---php脚本中执行换行
  4. c语言return 11,二级C语言教程章节测试11.对函数的进一步讨论
  5. 蚂蚁金服发布「定损宝」,推动图像定损技术在车险领域的应用
  6. python函数调用位置_python函数定义,调用,传参,位置参数及关键字参数,返回值
  7. 2017-2018-20172309 《程序设计与数据结构》第八周学习总结
  8. Java学习:多线程(2)
  9. Oracle数据库管理系统:大数据的备份
  10. c#如何判断字符串是否含中文
  11. AGS Server 10.1 切图工具
  12. (转)zabbix3.4使用percona-monitoring-plugins监控mysql
  13. MarkDown/Html在线转换(支持代码高亮,可复制到微信公众号、今日头条)
  14. MySQL之练习题5
  15. python创建变量score_关于Python创建类时的self参数和__init__
  16. 漫步最优化十八——点到集合的映射
  17. 有人说男人赚钱都是为了女人,这话说的有道理吗?
  18. 宣布降低Windows Azure 存储和计算的价格
  19. python实现图像检索的三种(直方图/OpenCV/哈希法)
  20. PeckShield旗下数字资产反洗钱系统CoinHolmes亮相北京网络安全大会!

热门文章

  1. ios 分享功能 集成友盟分享
  2. VC如何发布Release程序
  3. 01分数规划c语言,POJ 1330(LCA/倍增法模板)
  4. HTML字符编码简介
  5. win32应用程序_这个免费开源的「外挂」,让 Win32 老应用的字体更好看
  6. 转载-华科大四学生写万言忏悔书 劝学弟妹莫虚度光阴
  7. 3月英语学习—扬帆起航
  8. 2023年交规科目一易错点整理
  9. 首届“天权信安catf1ag”网络安全联合公开赛-部分misc
  10. Centos7 查看、增加、删除用户组与用户