• TCP 通信


    一、TCP与UDP的区别

    二、ServerSocket与Socket

    1 ServerSocket

    以上介绍的几个构造方法中,第二个构造方法最常用。

    2.Socket

     

    import java.io.*;
    import java.net.*;
    public class Server {
        public static void main(String[] args) throws Exception {
            new TCPServer().listen();     // 创建TCPServer对象,并调用listen()方法
        }
    }
    // TCP服务端
    class TCPServer {
        private static final int PORT = 7789;   // 定义一个端口号
        public void listen() throws Exception { // 定义一个listen()方法,抛出一个异常
            ServerSocket serverSocket = new ServerSocket(PORT); // 创建ServerSocket对象,服务器启动,监听7789端口
            Socket client = serverSocket.accept();//等待客户端连接7788端口,一旦有client端连接便创建socket实例,然后通过socket交互数据
            System.out.println("开始与客户端交互数据");
            InputStream is = client.getInputStream();//用于接收客户端发来的请求 
            byte[] buf = new byte[1024];
            int len = is.read(buf);//从输入流读取若干字节,把它们保存到字节数组buf中,返回字节数
            String messageGet = new String(buf,0,len);
            System.out.println("服务端从客户端获取到的信息:"+messageGet);
            OutputStream os = client.getOutputStream();// 用于发送信息
            os.write(("我是服务端,我已经收到客户端你的消息!").getBytes());   // 当客户端连接到服务端时,向客户端输出数据
            Thread.sleep(5000); // 模拟执行其它功能占用的时间
            System.out.println("结束与客户端交互数据");
            os.close();
            client.close();
        }
    }
    import java.io.*;
    import java.net.*;
    public class Client {
        public static void main(String[] args) throws Exception {
            new TCPClient().connect();              // 创建TCPClient对象,并调用connect()方法
        }
    }
    //TCP客户端
    class TCPClient {
        private static final int PORT = 7789;              // 服务端的端口号
        public void connect() throws Exception {
            //创建一个Socket并连接到给出地址和端口号的计算机
            Socket client = new Socket(InetAddress.getLocalHost(), PORT);
            OutputStream os = client.getOutputStream();
            String message = "我是客户端,收到请回答!";
            os.write(message.getBytes());
            InputStream is = client.getInputStream();     // 得到接收数据的流
            byte[] buf = new byte[1024];                  // 定义1024个字节数组的缓冲区
            int len = is.read(buf);                        // 将数据读到缓冲区中
            System.out.println(new String(buf, 0, len));  // 将缓冲区中的数据输出
            client.close();                                     // 关闭Socket对象,释放资源
        }
    }

  • 相关阅读:
    Maven 梳理
    Maven 梳理
    Maven 梳理-自动创建Maven项目(非web)
    Maven 梳理-手动创建Maven项目(非web),使用Maven编译、测试、打包、安装、引用
    Maven 梳理 -目录结构
    Maven 梳理-安装配置
    Spring 梳理-数据访问-DB
    JNDI数据源的配置
    Spring 梳理-JdbcTemplate简介
    Docker常用命令
  • 原文地址:https://www.cnblogs.com/thiaoqueen/p/8516295.html
Copyright © 2020-2023  润新知