java学习笔记 UDP协议

TCP的所有操作都建立在可靠的链接

UDP(数据报协议)发送的消息对方并不一定会接收到,所有的信息都是以数据报的形式发出

使用DatagramSocket类和DatagramPacket类完成操作

服务端UDP:

import java.net.*;
import java.io.*;

//定义服务端接收信息
public class TestUdpServer {
    public static void main(String[] args) {
        try {
            DatagramSocket ds = new DatagramSocket(9000);//设定监听端口号
            byte bytes[] = new byte[1024];//1KB
            DatagramPacket dp = new DatagramPacket(bytes,bytes.length);//DatagramPacket(byte[] buf, int length)构造方法
            //设定循环接收
            String str = null;
            while (true) {
                ds.receive(dp);//阻塞式方法,一直到接收到数据才解锁
                System.out.println("接收数据 : ");
                str = new String(bytes,0,dp.getLength());    //注意receive之后,dp填充的是bytes数组
                System.out.println(str + ": "+ dp.getAddress().getHostName() + "-----" + dp.getSocketAddress());
            }
        }catch(SocketException e1) {
            e1.printStackTrace();    
        }catch(IOException e2) {
            e2.printStackTrace();    
        }
    }    
}

客户端UDP:

import java.net.*;
import java.io.*;

//定义客户端发送信息
public class TestUdpClient {
    public static void main(String[] args) {
        try {
            DatagramSocket ds = new DatagramSocket(8888);//设定监听端口
            String str = "Hello Word!";
            byte bytes[] = str.getBytes();
            //DatagramPacket(byte[] buf, int offset, int length, SocketAddress address)
            //InetSocketAddress(InetAddress addr, int port)
            DatagramPacket dp = new DatagramPacket(bytes,0,bytes.length,new InetSocketAddress("192.168.0.121",9000));
            ds.send(dp);
            ds.close();
        }catch(SocketException e) {
            e.printStackTrace();    
        }catch(IOException e2) {
            e2.printStackTrace();    
        }
    }    
}

结果:

r1

转载于:https://www.cnblogs.com/yhwsy/p/5829510.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值