UDP传输中文乱码、异常解决

本文详细介绍了在Java Socket编程中遇到的UDP传输中文乱码、内容异常截断等问题,并通过使用流的方式成功解决这些问题。通过实现sendMessage和getMessage方法,确保了数据的正确传输和接收。
摘要由CSDN通过智能技术生成

Java socket编程,遇到UDP传输中文乱码、传输内容被异常截断等问题,查阅网上资料建议使用流的方式解决,所以试了一下,问题解决。

完整代码如下:

    public class MudpSrv {  
          
        int port = 6789;  
          
        public void sendMessage(String msg,MulticastSocket socket) throws IOException{  
            ByteArrayOutputStream ostream = new ByteArrayOutputStream();  
            DataOutputStream dataStream = new DataOutputStream(ostream);  
            dataStream.writeUTF(msg);  
            dataStream.close();  
              
            byte[] data = ostream.toByteArray();  
              
            InetAddress address = InetAddress.getByName("230.3.3.3");  
            socket.joinGroup(address);  
            DatagramPacket dp = new DatagramPacket(data, data.length, address,port);  
            socket.send(dp);  
        }  
          
        public void getMessage(MulticastSocket socket) throws IOException{  
            byte[] bs = new byte[1000];  
            DatagramPacket packet = new DatagramPacket(bs, bs.length);  
            socket.receive(packet);  
              
            DataInputStream istream = new DataInputStream(new ByteArrayInputStream(packet.getData(), packet.getOffset(), packet.getLength()));  
              
            String msg = istream.readUTF();  
              
            System.out.println(msg);  
        }  
          
        public static void main(String args[]) throws IOException{  
            MudpSrv srv = new MudpSrv();  
            MulticastSocket socket = new MulticastSocket(srv.port);  
            srv.sendMessage("妈妈再也不用担心我的学习",socket);  
            srv.getMessage(socket);  
        }  
      
    }  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值