2022-08-11 田龙跃 学习笔记

Socket通信

1.DatagramSocket-UDP类 .send(DatagramPacket类的报文包)
UDP只是收发报文包进行通信

点击查看发包和收包
public class DatagramSocketTest {
    @Test
    public void client() throws Exception {
//        构建UDP对象
        DatagramSocket datagramSocket=new DatagramSocket();
//        构建数据包
        String str="哈哈哈哈哈哈哈哈哈";
        DatagramPacket datagramPacket=new DatagramPacket(str.getBytes(),0,str.getBytes().length);
//        获取链接
        datagramSocket.connect(InetAddress.getLocalHost(),8888);
//        发送数据包
        datagramSocket.send(datagramPacket);
//        关闭资源
        datagramSocket.close();
    }
    @Test
    public void server() throws Exception {
//        构建UDP对象
        DatagramSocket datagramSocket = new DatagramSocket(8888);
//        构建数据包
        byte [] bytes=new byte[1024];
        DatagramPacket datagramPacket=new DatagramPacket(bytes,0,1024);
//        收包
        datagramSocket.receive(datagramPacket);
        byte[] data = datagramPacket.getData();
        System.out.println(new String(bytes,0,bytes.length));
//        关闭资源
        datagramSocket.close();
    }
}

2.ServerSocket-TCP类服务器端 .accept接受链接 accept.获取流
ServletSocket套接字简单实用
    @Test
    public void server() throws IOException {
//        服务器对象——端口
        ServerSocket serverSocket=new ServerSocket(8889);
        System.out.println("服务器运行");
//        开启服务器——接受访问
        Socket accept = serverSocket.accept();
//        获取输出流用来读取客户端传来的消息
        InputStream inputStream = accept.getInputStream();
//        输出流读
        int len;
        byte [] bytes=new byte[1024];
        while ((len=inputStream.read(bytes))!=-1){
            System.out.println(new String(bytes,0,len));
        }
//        关闭资源
        inputStream.close();
        accept.close();
    }

3.Socket-TCP客户端 .connect链接服务器 socket.获取流

Socket套接字简单实用
   @Test
    public void client() throws IOException {
//        创建Socket对象
        Socket socket=new Socket();
        System.out.println("客户端运行");
//        获取链接 ip地址+端口号
        socket.connect(new InetSocketAddress(InetAddress.getLocalHost(),8889));
//       获取输出流
        OutputStream outputStream = socket.getOutputStream();
        String string="Hello Service";
        outputStream.write(string.getBytes());
//       关闭资源
        outputStream.close();
        socket.close();
  }
**俩者配合效果**


** 客户端每次传输结束都要与客户端进行一次沟通告诉他我这次传输完了**??通信0811

4.URL工具类
5.InetAddress工具类

浏览器访问socket

就是tomcat原理:输出流直接写html相应响应头和Html页面等,我们可以截取出来,然后利用服务器的输出流.write出对应的响应(Tomcat原理)

(请求重定向会返回一个Location头:他的value值是重定向的网络地址)

tips(流从哪里构造出来的,就是从哪里读或者从哪里写)

posted @   沧月我爱  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示