欢迎光临散文网 会员登陆 & 注册

TCP实现服务器回应的代码

2020-04-19 15:15 作者:小垃圾kiki  | 我要投稿
package cn.jd.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();
    }
    
}

TCP实现服务器回应的代码的评论 (共 条)

分享到微博请遵守国家法律