Java多线程Socket的实现

应用多线程来实现服务器与多客户端之间的通信

1.基于TCP协议的Socket实现

在这里插入图片描述

工具类

public class ThreadUtils extends Thread{

    private Socket socket = null;

    public ThreadUtils (Socket socket){//创建构造方法
        this.socket = socket;
    }

    public void run() {
        InputStream is = null;
        InputStreamReader isr = null;
        BufferedReader bf = null;
        try {
            is = socket.getInputStream(); //获得字节输入流
            isr = new InputStreamReader(is);//将字节输入流转为 字符输入流
            bf = new BufferedReader(isr); //将字符输入流加入缓冲区
            String data = null;//返回的数据
            while (bf.readLine()!=null){
                data = bf.readLine(); //读取数据
            }
            socket.shutdownInput();//关闭输入流

        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                if(bf!=null)
                    bf.close();
                if(isr!=null)
                    isr.close();
                if(is!=null)
                    is.close();
                if(socket!=null)
                    socket.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }


    }
}

Action类

在这里插入图片描述

2.基于UDP协议的Socket实现

UDP协议(用户数据包协议)是无连接、不可靠、无序的。
速度相对而言比较快,进行传输的时候,首先会将要传输的数据定义成数据报(Datagram),在数据报中指明数据所要达到的Socket(主机地址和端口号),然后再将数据报发送出去。


相关操作类:


1.DatagramPacket :表示数据报包
2.DatagramSocket: 进行端到端通信的类

在这里插入图片描述

在这里插入图片描述

具体的实现

在这里插入图片描述
如果想要响应客户端 , 则可以调用DatagramPacket.getInetAddress(); 这个方法拿到客户端的Inetaddress实例
在发送数据报回去

在这里插入图片描述

传输一个对象可以使用ObjectOutputStream
在这里插入图片描述

  • 3
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值