日志文章

2019-12-28 aflfte2011

TCP登录模拟

package com.aflfte.tcp;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * 模拟登录 双向
 * 熟悉TCP服务器创建流程
 * 1、使用ServerSocket创建服务器 指定服务器端口
 * 2、阻塞式的等待连接accept
 * 3、操作:输入输出流操作
 * 4、释放资源
 * 
 * 
 * 
 * @author jinhao
 *
 */
public class LoginToWayServer {
public static void main(String[] args) throws Exception {
//使用ServerSocket创建服务器 指定服务器端口
ServerSocket server=new ServerSocket(9999);
//2、阻塞式的等待连接accept
Socket client=server.accept();
System.out.println("一个客户端建立了连接");
//3、操作:输入输出流操作
DataInputStream dis=new DataInputStream(client.getInputStream());
String data=dis.readUTF();
String uname="";
String upwd="";
//分析
String[] datas=data.split("&");
for(String info:datas) {
String[] userinfo=info.split("=");
//System.out.println(userinfo[0]+"-->"+userinfo[1]);
if(userinfo[0].equals("uname")) {
System.out.println("用户名:"+userinfo[1]);
uname=userinfo[1];
}else if(userinfo[0].equals("upwd")) {
System.out.println("密码:"+userinfo[1]);
upwd=userinfo[1];
}
}
//返回信息
DataOutputStream dos=new DataOutputStream(client.getOutputStream());

if(uname.equals("xiaolei") && upwd.equals("123456")) {
dos.writeUTF("登录成功!");
}else {
dos.writeUTF("用户名或密码错误");
}
dos.flush();
//4、释放资源
dis.close();
client.close();
server.close();
}
}




package com.aflfte.tcp;

import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.Socket;

/**
 * 模拟登录 双向
 *TCP客户端创建流程
 *1、建立连接:使用Socket创建客户端 +指定服务器地址和端口
 *2、操作:输入输出流操作
 *3、释放资源
 *
 * @author jinhao
 *
 */
public class LoginToWayClient {
public static void main(String[] args) throws Exception, Exception {
BufferedReader console=new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入用户名:");
String uname=console.readLine();
System.out.println("请输入密码:");
String upwd=console.readLine();
//1、建立连接:使用Scoket创建客户端 +指定服务器地址和端口
Socket client=new Socket("127.0.0.1",9999);
//2、操作:输入输出流操作
DataOutputStream dos=new DataOutputStream(client.getOutputStream());
dos.writeUTF("uname="+uname+"&upwd="+upwd);
dos.flush();
DataInputStream dis=new DataInputStream(client.getInputStream());
String datas=dis.readUTF();
System.out.println(datas);
//3、释放资源
dos.close();
client.close();
}
}

« TCP实现上传文件实例 | 实现TCP连接并发送文字»