TCP实现服务器回应的代码
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException;
/*
* 模拟登录双向
* 创建客户端
* 1.使用Socket创建客户端(这里实际上就是和服务器建立连接)
* 所以需要指定服务器的地址和端口
* 2.输入输出流操作
* 3.释放资源
*/
public class LoginTwoWayClient {
public static void main(String[] args) throws UnknownHostException, IOException {
System.out.println("------client----------");
//InputStreamReader是从字节流到字符流的桥:它读取字节,并使用指定的charset将其解码为字符
BufferedReader console=new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入用户名:");
String uname=console.readLine();
System.out.println("请输入密码:");
String upwd=console.readLine();
//1.使用Socket创建客户端(这里实际上就是和服务器建立连接)
Socket client=new Socket("localhost",8888);
// 2.输入输出流操作
DataOutputStream dos=new DataOutputStream(client.getOutputStream());
dos.writeUTF("用户名:"+uname+"&"+"密码:"+upwd);
dos.flush();
DataInputStream dis=new DataInputStream(client.getInputStream());
String result=dis.readUTF();//接收数据
System.out.println(result);
//3.释放资源
dis.close();
dos.close();
client.close();
}
}
package cn.jd.tcp;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
/*
* 模拟登录 双向
* 创建服务器
* 1.指定端口:使用ServerSocket创建服务器
* 2.阻塞式的等待连接
* 3.输入输出流操作
* 4.释放资源
*/
public class LoginTwoWayServer {
public static void main(String[] args) throws IOException {
System.out.println("------server----------");
//1.指定端口:使用ServerSocket创建服务器
ServerSocket server=new ServerSocket(8888);
//2.阻塞式等待连接accept
Socket client=server.accept();//一次accept就是一个连接
System.out.println("一个客户端建立了连接");
//3.输入输出流操作
DataInputStream dis=new DataInputStream(client.getInputStream());
String datas=dis.readUTF();//接收数据
String uname="";
String upwd="";
//分析
String[] dataArray=datas.split("&");
for(String info:dataArray) {
String[] userInfo=info.split(":");
// System.out.println(userInfo[0]+"-->"+userInfo[1]);
if(userInfo[0].equals("用户名")) {
System.out.println("你的用户名为:"+userInfo[1]);
uname=userInfo[1];
}else if(userInfo[0].equals("密码")) {
System.out.println("你的密码为:"+userInfo[1]);
upwd=userInfo[1];
}
}
//输出
DataOutputStream dos=new DataOutputStream(client.getOutputStream());
if(uname.equals("abc")&&upwd.equals("123")) {//成功
dos.writeUTF("登录成功");
}else {//失败
dos.writeUTF("用户名和密码错误");
}
dos.flush();
dos.close();
//4.释放资源
dis.close();
client.close();
server.close();
}
}