网络编程(DatagramSocket && DatagramPacket)

UDP传输

udp传输数据就好像在大海上运输货物,DatagramSocket就像的两个通信港口的码头,DatagramPacket就像在两端运输货物的轮船

  • 发送端(send)
    • 创建DatagramSocket,随机端口号
    • 创建DatagramPacket,制定数据,长度,地址和端口
    • 使用DatagramSocket发送DatagramPacket
    • 关闭DatagramSocket
    • 异常处理
package com.internet;

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

public class udp_send {
    public static void main(String[] args) throws IOException {         //异常处理
        String str="Are you Ok?";               //要发送的数据(货物)
        DatagramSocket datagramSocket = new DatagramSocket();           //创建DatagramSocket(码头)
        DatagramPacket datagramPacket =
                new DatagramPacket(str.getBytes(),str.getBytes().length, InetAddress.getByName("192.168.1.167"),1111);           //创建DatagramPacket,相当于货轮,将数据打包(要发送的数据,数据的长度,Ip地址,端口)
        datagramSocket.send(datagramPacket);            //发送(发货)
        datagramSocket.close();                         //关闭(码头)
    }
}
  • 接收端(receive)
    • 创建DatagramSocket,匹配端口号
    • 创建DatagramPacket,创建接收数据和有效数据长度
    • 接收socket
    • 接收packet
    • 关闭DatagramSocket
package com.internet;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;

public class udp_receive {
    public static void main(String[] args) throws IOException {
        DatagramSocket datagramSocket = new DatagramSocket(1111);       //创建(码头)
        DatagramPacket datagramPacket = new DatagramPacket(new byte[1024],1024);        //创建DatagramPacket(集装箱)
        datagramSocket.receive(datagramPacket);         //接收数据

        byte[] arr = datagramPacket.getData();          //获取数据
        int len=datagramPacket.getLength();             //获取有效长度
        System.out.println(new String(arr,0,len)); 
        datagramSocket.close();                     //关闭(码头)
    }
}

  • 25
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值