网络编程中的TCP编程

TCP是基于IO流的操作,分为了客户端和服务端,两者通信需要经过三次握手。
创建客户端和服务端的基本流程:
客户端
1、创建客户端 Socket(String host, int port) 指定服务端的IP+端口
2、获取IO流
3、写出数据
4、关闭

public class TCPClient {
    public static void main(String[] args) throws IOException {
        System.out.println("-----client-----");
        Scanner scanner=new Scanner(System.in);
        //从键盘手动输入用户名和密码
        System.out.print("请输入用户名:");
        String name=scanner.next();
        System.out.print("请输入密码:");
        String pwd=scanner.next();
        //创建客户端  127.0.0.1测试端口号
        Socket client = new Socket("127.0.0.1", 8888);
        //获取输出流
        OutputStream os = client.getOutputStream();
        //往服务器端写出数据
        os.write(("name="+name+"&"+"pwd="+pwd).getBytes());
        os.flush();
        //接收从服务端发送的数据
        InputStream is = client.getInputStream();
        byte [] bytes=new byte[1024];
        int len = is.read(bytes);
        //new String(bytes,0,len)这个将读取到的字节转化为字符
        System.out.println(new String(bytes,0,len));

        //关闭
        is.close();
        os.close();
        client.close();
    }
}

服务端
1、创建服务端 ServerSocket(int port) 创建绑定到特定端口的服务器套接字。 服务端的端口号
2、阻塞式监听
3、获取IO流
4、读入数据
5、操作数据
6、关闭

public class TCPServer {
    public static void main(String[] args) throws IOException {
        System.out.println("----server----");
        String name = "laozhang";
        String pwd="laowang";
        //创建服务端
        ServerSocket server=new ServerSocket(8888);
        //创建阻塞式监听
        Socket client = server.accept();
        //获取输入流
        InputStream is = client.getInputStream();
        //读取客户端传入的数据
        byte [] bytes=new byte[1024];
        int len = is.read(bytes);
        String str=new String(bytes,0,len);
        //将其分割开成为数组
        String[] strs=str.split("&");
        //通过=再做一次分割
        for(String str3:strs){
            String[] strs2 = str3.split("=");
            if(strs2[0].equals("name")){
                name=strs2[1];
            }else if(strs2[0].equals("pwd")){
                pwd=strs2[1];
            }
        }
        //设置输出流
        OutputStream os = client.getOutputStream();

        //校验
        if(name.equals("laopei")&&pwd.equals("0523")){
            os.write("登录成功".getBytes());
        }else{
            System.out.println(name);
            System.out.println(pwd);
            os.write("登录失败".getBytes());
        }
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值