栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

最简单的服务器和客户端Java代码学习

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

最简单的服务器和客户端Java代码学习

最简单的服务器和客户端Java代码学习

客户端逻辑

  1. 创建Socket对象
  2. 获取输出流—>请求
  3. 获取输入流—》响应
  4. 关闭流
    客户端代码
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.rmi.UnexpectedException;

public class Client {
    public static void main(String[] args) {
        //1.创建Socket对象
        Socket client = null;
        DataOutputStream dos = null;
        DataInputStream dis = null;
        try {
            client = new Socket("localhost", 8888);
            //2.获取输出流--->请求
            dos = new DataOutputStream(client.getOutputStream());
            dos.writeUTF("我是客户端:服务器你好!");
            //3.获取输入流---》响应
            dis = new DataInputStream(client.getInputStream());
        }catch (UnexpectedException e){
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            //4.关闭流
            IOClose.closeAll(dis,dos,client);
        }
    }
}

服务端逻辑

  1. 创建ServerSocket对象
  2. 监听是否有客户端发送请求
  3. 获取Socket对象
  4. 获取输入流 --》得到客户端的请求
  5. 获取输出流—》给客户端响应结果
  6. 关闭流
    服务端代码
public class Server {
    public static void main(String[] args) {
        //1.创建ServerSocket对象
        ServerSocket server = null;
        //2.监听是否有客户端发送请求
        Socket client = null;
        //3.获取Socket对象
        DataInputStream dis = null;
        DataOutputStream dos = null;

        //4.获取输入流 --》得到客户端的请求
        try {
            server = new ServerSocket(8888);

        client = server.accept();
        dis = new DataInputStream(client.getInputStream());
        System.out.println(dis.readUTF());
        //5.获取输出流---》给客户端响应结果
        dos = new DataOutputStream(client.getOutputStream());
        dos.writeUTF("客户端您好:我是服务器,我收到你的消息");
        //6.关闭流
    } catch (IOException e) {
        e.printStackTrace();
    }finally {
            IOClose.closeAll(dos,dis,client,server);
        }
        }
}

CS架构
开启服务端,客户端

BS架构
服务器代码2:

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

public class Server2 {
    public static void main(String[] args) {
        //1.创建ServerSocket对象
        ServerSocket server = null;
        //2.监听是否有客户端发送请求
        Socket client = null;
        //4.获取输入流 --》得到客户端的请求
        BufferedReader br=null;
        try {
            server = new ServerSocket(8888);
            client = server.accept();
            //获取来自浏览器的请求
             br = new BufferedReader(new InputStreamReader(client.getInputStream(),"utf-8"));
             String str = null;
             while ((str = br.readLine()).length()>0){
                 System.out.println(str);

            }

    } catch (IOException e) {
        e.printStackTrace();
    }finally {
            IOClose.closeAll(br,client,server);
        }
        }
}

网页 get请求


     
               我的第一个html
     
     
                   hello world
                    

用户名:

密码:

页面展示:

输入用户名和密码


请求已经发送到服务端,我们去看看服务端

post请求


     
               我的第一个html
     
     
                   hello world
                    

用户名:

密码:

服务端代码3

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;

public class Server3 {
    public static void main(String[] args) {
        //1.创建ServerSocket对象
        ServerSocket server = null;
        //2.监听是否有客户端发送请求
        Socket client = null;
        //4.获取输入流 --》得到客户端的请求

        InputStream is = null;
        try {
            server = new ServerSocket(8888);
            client = server.accept();
            //获取来自浏览器的请求
            is = client.getInputStream();
            byte [] buf = new byte[20480];
            int len = is.read(buf);
            System.out.println(new String(buf,0,len));

            }catch (IOException e){
            e.printStackTrace();

    }finally {
            IOClose.closeAll(is,client,server);
        }
        }
}



登录成功 带有响应结果

服务端代码4

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;


import static jdk.nashorn.internal.runtime.regexp.joni.encoding.CharacterType.BLANK;



public class Server4 {


    public static void main(String[] args) {
        String CRLF = "rn";
        //1.创建ServerSocket对象
        ServerSocket server = null;
        //2.监听是否有客户端发送请求
        Socket client = null;
        //4.获取输入流 --》得到客户端的请求

        InputStream is = null;
        try {
            server = new ServerSocket(8888);
            client = server.accept();
            //获取来自浏览器的请求
            is = client.getInputStream();
            byte [] buf = new byte[20480];
            int len = is.read(buf);
            System.out.println(new String(buf,0,len));
            
            StringBuilder sb = new StringBuilder();
            StringBuilder sbContent = new StringBuilder();//请求的文本
            sbContent.append("响应结果");
            sbContent.append("登录成功");
            //拼接响应头
            sb.append("HTTP/1.1").append(BLANK).append(200).append(BLANK).append("ok");
            sb.append(CRLF);//换行
            sb.append("Content-Type:text/html;charset=utf-8");
            sb.append(CRLF);
            sb.append("Content-Length:").append(sbContent.toString().getBytes().length).append(CRLF);
            sb.append(CRLF);//换行。代表响应头与响应的正文部门之间的空行
            sb.append(sbContent);
            //通过流输出
            BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(client.getOutputStream(),"utf-8"));
            bw.write(sb.toString());
            bw.flush();
            bw.close();

            }catch (IOException e){
            e.printStackTrace();

    }finally {
            IOClose.closeAll(is,client,server);
        }
        }
}

关注微信公众号:一只Java程序猿
是对我最好的支持。谢谢

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/657869.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号