千锋逆战班,网络编程应用
在千锋学习的第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();}}
千锋逆战班,网络编程应用相关推荐
- 千锋逆战班学习第二十五天
千锋逆战班学习第25天 努力或许没有收获,但不努力一定没收获,加油. 今天我学了Java课程的集合. 中国加油!!!武汉加油!!!千锋加油!!!我自己加油!!! 4.有如下代码: public cla ...
- 千锋逆战班学习第二十三天 集合练习(一)
千锋逆战班 在千锋"逆战"学习第23天, 每个人生阶段都需要努力去扮好自己的角色,越努力越轻松,越坚强越幸运! 加油! 2(List)有如下代码 import java.util. ...
- 千锋逆战班学习日志Day47
千锋逆战班学习第47天 表单标签 CSS介绍 二.CSS和HTML结合 2.1CSS和HTML结合之内联结合 2.2CSS与HTML结合之内部部结合 2.3CSS和HTML结合之外部结合 三.访问路径 ...
- 千锋逆战班学习第二十四天
千锋逆战班 在千锋"逆战"学习第24天, 每个人生阶段都需要努力去扮好自己的角色,越努力越轻松,越坚强越幸运! 加油! 1(Object类)有下面代码 interface IA{v ...
- 1903java全套_#千锋逆战班,java1903#
在千锋"逆战"学习第17天 SpringMVC运行流程: SpringMVC基础配置: 1.web.xml: dispatcherServlet / 2.controller层方法 ...
- 千锋逆战班,网络编程
在千锋学习的第33天 努力努力在努力,坚持坚持再坚持!!!加油 今天我学习了网络的划分层次,以及其中的TCP和IP协议,学习了IntAddress类和ServerScoket和Scoket 1.填空: ...
- #千锋逆战班,拼搏永向前#
在千峰"逆战"学习第十一天 如果有天我们湮没在人潮之中,庸碌一生,那是因为我们没有努力要活得丰盛 今天我学习了一下内容: 1.什么是JSP 2.JSP的语法 3.JSP的指令 4. ...
- 千锋逆战班,css注册案例
千锋学习的第四十八天, 不积跬步无以至千里,不积小流无以成江河: 注册案例代码: <!DOCTYPE html> <html><head><meta char ...
- #千锋逆战班,接口回调#
在千锋学习的第十九天, 每个人生阶段都需要努力去扮演好自己的角色,越努力,越轻松,越坚强越幸运,加油! 中国加油!武汉加油,千锋加油!我自己加油! 导入java.lang.Comparable方法来对 ...
最新文章
- ssh连接卡在【To escape to local shell, press ‘Ctrl+Alt+]‘.】的解决方法
- ios时间相差多少天_IOS计算某个日期和当前时间的天数差
- ubuntu---php脚本中执行换行
- c语言return 11,二级C语言教程章节测试11.对函数的进一步讨论
- 蚂蚁金服发布「定损宝」,推动图像定损技术在车险领域的应用
- python函数调用位置_python函数定义,调用,传参,位置参数及关键字参数,返回值
- 2017-2018-20172309 《程序设计与数据结构》第八周学习总结
- Java学习:多线程(2)
- Oracle数据库管理系统:大数据的备份
- c#如何判断字符串是否含中文
- AGS Server 10.1 切图工具
- (转)zabbix3.4使用percona-monitoring-plugins监控mysql
- MarkDown/Html在线转换(支持代码高亮,可复制到微信公众号、今日头条)
- MySQL之练习题5
- python创建变量score_关于Python创建类时的self参数和__init__
- 漫步最优化十八——点到集合的映射
- 有人说男人赚钱都是为了女人,这话说的有道理吗?
- 宣布降低Windows Azure 存储和计算的价格
- python实现图像检索的三种(直方图/OpenCV/哈希法)
- PeckShield旗下数字资产反洗钱系统CoinHolmes亮相北京网络安全大会!