📌  相关文章
📜  使用 DatagramPacket 和 DatagramSocket 类创建服务器-客户端应用程序

📅  最后修改于: 2022-05-13 01:55:33.011000             🧑  作者: Mango

使用 DatagramPacket 和 DatagramSocket 类创建服务器-客户端应用程序

要创建一个使用 UDP 在客户端和服务器之间建立连接的应用程序,我们需要执行以下步骤:

  • 创建服务器程序
  • 创建客户端程序
  • 执行客户端和服务器程序

让我们执行以下小节中的步骤:

创建服务器程序

让我们创建名为 UDPServerEx 的服务器类,它从用户那里获取消息并将消息(数据报)发送到客户端。清单 1 显示了UDPServerEx 的代码。 Java文件:

文件名:UDPServerEx。Java

Java
// A server that sends messages to the client
 
import java.net.*;
 
class UDPServerEx {
 
    public static DatagramSocket mySocket;
    public static byte myBuffer[] = new byte[2000];
 
    public static void serverMethod() throws Exception
    {
        int position = 0;
        while (true) {
            int charData = System.in.read();
            switch (charData) {
            case -1:
                System.out.println(
                    "The execution of "
                    + "the server has been terminated");
                return;
            case '\r':
                break;
            case '\n':
                mySocket.send(
                    new DatagramPacket(
                        myBuffer,
                        position,
                        InetAddress.getLocalHost(),
                        777));
                position = 0;
                break;
            default:
                myBuffer[position++]
                    = (byte)charData;
            }
        }
    }
    public static void main(String args[]) throws Exception
    {
        System.out.println("Please enter some text here");
        mySocket = new DatagramSocket(888);
        serverMethod();
    }
}


Java
// UDPClient that receives and
// displays messages sent from the server
 
import java.net.*;
class UDPClient {
 
    public static DatagramSocket mySocket;
    public static byte myBuffer[] = new byte[2000];
 
    public static void clientMethod() throws Exception
    {
        while (true) {
            DatagramPacket dataPacket
                = new DatagramPacket(myBuffer,
                                     myBuffer.length);
            mySocket.receive(dataPacket);
            System.out.println("Message Received :");
            System.out.println(
                new String(
                    dataPacket.getData(),
                    0,
                    dataPacket.getLength()));
        }
    }
    public static void main(String args[]) throws Exception
    {
        System.out.println(
            "You need to press CTRL+C"
            + " in order to quit.");
        mySocket = new DatagramSocket(777);
        clientMethod();
    }
}


编译 UDPServerEx。 Java文件:

D:\UDPExample>javac UDPServerEx.java

注意:路径可能会根据您保存文件的位置而有所不同。

创建客户端程序

让我们创建一个名为 UDPClient 的客户端类,它接受从服务器发送的消息,即 UDPServerEx 类。客户端然后显示在命令提示符中收到的消息。清单 2 显示了UDPClient 的代码。 Java文件:

文件名:UDP 客户端。Java

Java

// UDPClient that receives and
// displays messages sent from the server
 
import java.net.*;
class UDPClient {
 
    public static DatagramSocket mySocket;
    public static byte myBuffer[] = new byte[2000];
 
    public static void clientMethod() throws Exception
    {
        while (true) {
            DatagramPacket dataPacket
                = new DatagramPacket(myBuffer,
                                     myBuffer.length);
            mySocket.receive(dataPacket);
            System.out.println("Message Received :");
            System.out.println(
                new String(
                    dataPacket.getData(),
                    0,
                    dataPacket.getLength()));
        }
    }
    public static void main(String args[]) throws Exception
    {
        System.out.println(
            "You need to press CTRL+C"
            + " in order to quit.");
        mySocket = new DatagramSocket(777);
        clientMethod();
    }
}

使用以下命令编译 UDPClient。 Java文件:

D:\UDPExample>javac UDPClient.java

输出

注意:要执行 UDPServerEx 和 UDPClient 类,请运行 UDPServerEx。 Java和UDP客户端。 Java在两个单独的命令提示符窗口中。请记住,UDPServerEx 类在 UDPClient 类之前执行。图 1 显示了 UDP Server Java和 UDPClient 的输出。 Java文件:

显示 UDPServerEx 和 UDPClient 类的输出