UDP编程

一切以包裹为中心,字节数组为核心

一、UDP的基本步骤:

1)发送端

package com.sxt.udp;

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;

/*----发送端
*1、创建数据流套接字
* 2、将数据转为字节数组
* 3、打包
* 4、发送包
*5、释放资源
 */
public class UdpClient {
    public static void main(String[] args) throws Exception {
        System.out.println("----发送方启动中----");
        DatagramSocket ds=new DatagramSocket(3333);
        String msg="shsxt";
        byte[] data=msg.getBytes();
        DatagramPacket dp=new DatagramPacket(data,0,data.length,new InetSocketAddress("localhost",9999));
        ds.send(dp);
        ds.close();
    }
}

要点总结:

封装包裹时应加上地址和端口,注意其表示 new InetSocketAddress("localhost",9999));

而不是直接写入"localhost",9999

2)接收端

package com.sxt.udp;

import java.net.DatagramPacket;
import java.net.DatagramSocket;

/*接收端
*1、DatagramSocket(int port)创建数据包套接字
* 2、创建包
* 3、接收数据
* 4、分析数据
* 5、释放资源
 */
public class UdpServer {
    public static void main(String[] args) throws Exception {
        System.out.println("----接收方启动中-----");
        DatagramSocket ds=new DatagramSocket(9999);
        byte[] data=new byte[1024];
        DatagramPacket dp=new DatagramPacket(data ,0,data.length);
        ds.receive(dp);
        byte[] datas=dp.getData();
        int len=dp.getLength();
        String str=new String(datas,0,len);
        System.out.println(str);
        ds.close();
    }

}

二、接收发送数据类型

1)发送端

package com.sxt.udp;

import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;

/*----发送端
*1、创建数据流套接字
* 2、将数据类型转为字节数组
* 3、打包
* 4、发送包
*5、释放资源
 */
public class UdpClient {
    public static void main(String[] args) throws E
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
UDP是一种无连接的协议,适用于一些需要快速传输数据、但可靠性要求相对较低的应用场景。DNS(Domain Name System)是一种用于将域名转换为IP地址的网络协议。 在UDP编程中,我们可以使用Python的socket库来创建UDP套接字,实现UDP通信。具体步骤如下: 1. 导入socket库 ```python import socket ``` 2. 创建UDP套接字 ```python udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) ``` 其中,socket.AF_INET表示使用IPv4协议,socket.SOCK_DGRAM表示使用UDP协议。 3. 绑定端口号 ```python udp_socket.bind(("localhost", 8888)) ``` 这里以本地主机为例,绑定了端口号为8888的UDP套接字。 4. 接收数据 ```python data, addr = udp_socket.recvfrom(1024) ``` 该语句会阻塞程序,等待接收数据。当收到数据时,会返回一个元组,其中data表示接收到的数据,addr表示发送方的地址信息。 5. 发送数据 ```python udp_socket.sendto(data, addr) ``` 该语句将data数据发送给addr地址。 在DNS中,我们可以使用Python的socket库来实现DNS查询。具体步骤如下: 1. 创建UDP套接字 ```python dns_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) ``` 2. 发送DNS查询请求 ```python dns_socket.sendto(query_data, (dns_server_ip, dns_server_port)) ``` 其中,query_data表示DNS查询请求数据,dns_server_ip和dns_server_port表示DNS服务器的地址和端口号。 3. 接收DNS查询响应 ```python response_data, server_addr = dns_socket.recvfrom(1024) ``` 该语句会阻塞程序,等待接收DNS查询响应。当收到响应时,会返回一个元组,其中response_data表示DNS查询响应数据,server_addr表示DNS服务器的地址信息。 以上就是UDP编程和DNS查询的基本步骤。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值