网络编程(Socket/HTTP)实战篇--UDP网络通信编程

目录

题目:

思路分析:

代码

步骤


题目:

         

思路分析:

           注意写的是两个程序 

代码
 

package upd;

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

/*
 * upd接收端
 */
public class UPDReceiverA {
    public static void main(String[] args) throws IOException {
        //1.创建一个DatagramSocket对象,准备在9999端口接收数据
        DatagramSocket socket = new DatagramSocket(9999);
        //2.创建一个DatagramPacket对象,准备接收数据
        //一个数据包,最大64k
        byte[] buf = new byte[1024*64];
        DatagramPacket packet = new DatagramPacket(buf, buf.length);
        //3.调用接受方法,将通过网络传输的DatagramPacket对象,填充到packet对象
        //当有数据包发送到本机的9999端口时,就会接收到数据
        //如果没有数据包发送到本机的9999端口,就会阻塞等待
        System.out.println("接收端A在9999端口等待接收数据...");
        socket.receive(packet);//阻塞式接受

        //4可以把packet进行一个拆包,取出数据,并显示
        int length=packet.getLength();//实际接收到的数据字节长度
        byte[] data = packet.getData();//接收到的数据
        String s = new String(data, 0, length);
        System.out.println(s);


        //回复信息给B端
        //将需要发送的数据,封装到DatagramPacket对象
        data = "好的,明天见".getBytes();//将字符串转成字节数组
        packet = new DatagramPacket(data, data.length, InetAddress.getByName("192.168.44.1"), 9998);
        socket.send(packet);


        //5.关闭资源
        System.out.println("接收端A退出");
        socket.close();
    }
}
package upd;

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

/*
 * UPD发送端
 */
@SuppressWarnings({"all"})
public class UPDSenderB {
    public static void main(String[] args) throws IOException {
        //1.创建DatagramSocket对象,准备在9998端口进行数据的发送
        DatagramSocket socket = new DatagramSocket(9998);
        //2.将需要发送的数据,封装到DatagramPacket对象
        byte[] data = "hello 明天吃火锅".getBytes();
        //封装的DatagramPacket对象, data内容字节数组,data.length长度,主机,端口
        DatagramPacket packet = new DatagramPacket(data, data.length, InetAddress.getByName("192.168.44.1"), 9999);

        //3.调用send方法,发送数据
        socket.send(packet);


        //接收来自A端的回复
        //2.创建一个DatagramPacket对象,准备接收数据
        //一个数据包,最大64k
        byte[] buf = new byte[1024*64];
        packet = new DatagramPacket(buf, buf.length);
        //3.调用接受方法,将通过网络传输的DatagramPacket对象,填充到packet对象
        //当有数据包发送到本机的9998端口时,就会接收到数据
        //如果没有数据包发送到本机的9998端口,就会阻塞等待
        socket.receive(packet);//阻塞式接受

        //4可以把packet进行一个拆包,取出数据,并显示
        int length=packet.getLength();//实际接收到的数据字节长度
        data = packet.getData();//接收到的数据
        String s = new String(data, 0, length);
        System.out.println(s);

        //4.关闭资源
        socket.close();
        // 修正拼写错误
        System.out.println("发送端B退出");
    }
}

 

步骤

        先执接收端,再执行发送端

你可能感兴趣的:(java,网络,http,udp)