网络编程学习笔记(二)UDP协议及聊天小程序的实现

UDP协议是传输层协议,它是无连接,不保证可靠的传输层协议。那么如果要进行发送端和接收端的通讯应该如何进行?

两个基本概念:

1.Socket 套接字

  • Socket就是为网络服务提供的一种机制
  • 网络通信其实就是Socket间的通信
  • (网络想要进行通信需要两个端点)数据在两个Socket间通过IO传输

2.UDP传输(Java中建立了一些对象对UDP进行封装,方便我们进行操作)

  • DatagramSocket 此类用来发送和接收数据报包的套接字
  • DatagramPacket 此类表示数据报包,数据报包用来实现无连接包投递服务。每条报文仅根据该包中包含的信息从一台机器路由到另一台机器。从一台机器发送到另一台机器的多个包可能选择不同的路由,也可能按不同的顺序到达。不对包投递做出保证,因此是不可靠的。(构造参数中带有地址信息的DatagramPacket对象是用来发送数据报包的)

UDP协议-发送端

创建UDP传输的发送端
(1)建立UDP的Socket服务
(2)将要发送的数据封装到数据包中
(3)通过UDP的Socket服务将数据包发送出去
(4)关闭Socket服务

public class UDPSendDemo {
    public static void main(String[] args) throws IOException {
        System.out.println("发送端启动");
        //1.udpsocket服务,使用DatagramSocket对象
        DatagramSocket ds = new DatagramSocket();
        //2.将要发送的数据装到数据包中
        String str = "udp传输演示";
        //使用DatagramPacket将数据封装到该对象包中
        byte[] buf = str.getBytes();
        /*
        构造方法:
        DatagramPocket(byte[] buf,int length,InetAddress address,int port):
        构造数据包,用来将长度为length的包发送到指定主机上的指定端口号。
        端口号在0-65535之间即可,尽量避免0-1024,避免与系统冲突
         */
        DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("127.0.0.1"),10000);//10000为目的端口号
        //3.通过UDP的Socket服务,将数据包发送出去
        ds.send(dp);
        ds.close();
    }
}

U

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值