jck28 - 小柒 - socket协议测试

一,socket协议介绍

  • 在计算机网络中,Socket(套接字)是一种通信机制。
  • Socket是对TCP/IP协议的封装。
  • HTTP协议是应用层协议,更标准,方便。
  • Socket协议更底层、更通用。

二,应用场景

  • 直接应用:特定的物联网应用中,需要与底层硬件或其他系统进行直接的、定制化的通信。
  • 间接应用:大部分的协议都是基于 Socket 协议进行抽象优化,比如HTTP协议。

三,实现方案

  • 环境准备。
  • 实现思路。
    • 发起请求。
    • 获得响应。
    • 断言与预期结果是否一致。
import java.io.*;
import java.net.Socket;

public class SocketClass {
    public String sendSocket(String sendData){
        String hostName = "socket.hogwarts.ceshiren.com";
        int port = 30001;
        String response = null;

        //建立socket连接
        try {
            Socket socket = new Socket(hostName, port);
            //获取输入流和输出流
            OutputStream outputStream = socket.getOutputStream();
            DataOutputStream out = new DataOutputStream(outputStream);

            InputStream inputStream = socket.getInputStream();
            DataInputStream input = new DataInputStream(inputStream);
            // 向服务器发送数据
            out.writeUTF(sendData);
            System.out.println("发送消息给服务器:" + sendData);
            //从服务器接收数据
            response = input.readUTF();
            System.out.println("从服务器接收到的消息:" + sendData);
            //关闭连接
            socket.close();

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

import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.*;

class SocketClassTest {

    @Test
    void sendSocket() {
        SocketClass socketClass = new SocketClass();
        String res = socketClass.sendSocket("hogwarts测试开发");
        assertEquals("hogwarts测试开发",res);
    }
}