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

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

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

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

让我们在下面的小节中执行这些步骤。

创建服务器程序

让我们创建服务器类,命名为UDPServerEx,它接收来自用户的消息并将消息(数据报)发送到客户端。清单1显示了 UDPServerEx.java 文件的代码。

文件名:UDPServerEx.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

要编译UDPServerEx.java文件

D:\UDPExample>javac UDPServerEx.java
Java

注意:路径可能根据你保存文件的地方而有所不同

创建客户端程序

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

文件名:UDPClient.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();
    }
}
Java

使用以下命令来编译UDPClient.java文件

D:\UDPExample>javac UDPClient.java
Java

输出

注意: 为了执行UDPServerEx和UDPClient类,请在两个不同的命令提示符窗口中运行UDPServerEx.java和UDPClient.java。记住,UDPServerEx类要在UDPClient类之前执行。图1显示了UDP Server java和UDPClient.java文件的输出:

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

显示UDPServerEx和UDPClient类的输出结果

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册