使用Java通过UDP实现简单计算器 在Java中使用UDP实现一个简单的计算器

2023年 8月 28日 85.0k 0

使用Java通过UDP实现简单计算器

在Java中使用UDP实现一个简单的计算器-1

互联网协议套件包含所有类型的协议,使设备之间能够通过互联网进行通信。 UDP 是该套件的协议之一,其完整形式是用户数据报协议。与 TCP 不同,它不可靠,而且是无连接协议。在发送数据之前,它不会与其他设备建立任何类型的连接。

在本文中,我们将使用 Java 中的 UDP 开发一个简单的客户端-服务器端计算器。客户端请求操作,服务器计算后将结果发送给客户端设备。

Java 网络

让我们首先简要了解一些关于Java网络的基本概念−

Inet地址

IP地址是一个32位或128位的无符号数字,用于唯一标识互联网上的设备。记住IP主机的名称比记住数字地址更容易。因此,我们需要使用"InetAddress"类来封装它。我们使用它的内置方法"getLocalHost()"来获取本地主机的IP地址。

数据报

它们是小型数据包,包含可以通过互联网在两台机器之间传递的数据。 Java实现两个类来建立UDP连接 -

DatagramSocket类用于发送和接收数据报包。它还确定这些包的目的地。它内置的方法‘send()’和‘receive()’分别用于发送和接收数据包。

语法

DatagramSocket nameOfObject = new DatagramSocket();

登录后复制

DatagramPacket类的对象存储要发送的数据。

语法

DatagramPacket nameOfPacket = new DatagramPacket();

登录后复制

使用UDP的计算器程序

客户端程序

代码的工作原理

  • 我们首先导入两个最重要的包,名为‘java.net’,用于访问与Java网络相关的所有类,以及‘java.io’,用于输入和输出流。使用‘java.util’包来使用‘Scanner’类。

  • 建立一个UDP连接,然后获取本地主机地址。

  • 现在,在try块内部,我们将通过‘DatagramSocket’类的‘send()’和‘receive()’方法来请求用户输入以请求操作并相应地接收结果。

import java.io.*;
import java.net.*;
import java.util.*;
public class ClientCalc {
public static void main(String args[]) throws IOException {
Scanner inp = new Scanner(System.in);
// making UDP connection
DatagramSocket datagsokt = new DatagramSocket();
// fetching the localhost address
InetAddress addr = InetAddress.getLocalHost();
byte strm[] = null;
try {
while (true) {
System.out.println("Type 1 for Addition");
System.out.println("Type 2 for Subtraction");
System.out.println("Type 3 for Multiplication");
System.out.println("Type 4 for Division");
System.out.println("Enter your choice: ");
String oprtr = inp.nextLine();
// to convert the user choice to byte
strm = new byte[256];
strm = oprtr.getBytes();
// creating datagram packet to send to server
DatagramPacket packtsend = new DatagramPacket(strm, strm.length, addr, 6666);
datagsokt.send(packtsend);
// Type 0 for cut the connection
if (oprtr.equals("0")) {
break;
}
// to receive the result from server
strm = new byte[256];
DatagramPacket packtrec = new DatagramPacket(strm, strm.length);
datagsokt.receive(packtrec);
// display the result
System.out.println("Your Result for the given operation = " + new String(strm, 0, strm.length));
}
}
// to handle exception
catch(Exception exp) {
System.out.println(exp);
}
}
}

登录后复制

服务器端程序

代码的工作原理

  • 首先,与客户端建立连接,并定义 DatagramPacket 类的两个对象,以使用“DatagramSocket”类的“send()”和“receive()”方法发送和接收数据包。

  • 在try块内,我们接收来自客户端的请求,然后使用switch case执行操作并将结果发送到客户端设备。

示例

import java.io.*;
import java.net.*;
class ServerCalc {
public static void main(String[] args) throws IOException {
// making connection to client
DatagramSocket datagsokt = new DatagramSocket(6666);
byte[] strm = null;
DatagramPacket packtrec = null;
DatagramPacket packtsend = null;
try {
while (true) {
strm = new byte[256];
// to receive the packet from client
packtrec = new DatagramPacket(strm, strm.length);
datagsokt.receive(packtrec);
String oprtr = new String(strm, 0, strm.length);
System.out.println("Client has requested for " + oprtr );
int data1 = 15;
int data2 = 5;
int tot = 0;
char opt = oprtr.charAt(0);
switch(opt) {
case '1' :
tot = data1 + data2;
break;
case '2' :
tot = data1 - data2;
break;
case '3' :
tot = data1 * data2;
break;
case '4' :
tot = data1 / data2;
break;
default :
break;
}
// Converting the string result to integer
String res = Integer.toString(tot);
// converting the integer to bytes
strm = res.getBytes();
int port = packtrec.getPort();
// getting port number
// sending final result in the form of datagram packet
packtsend = new DatagramPacket(strm, strm.length, InetAddress.getLocalHost(), port);
datagsokt.send(packtsend);
}
}
// to handle exception
catch(Exception exp) {
System.out.println(exp);
}
}
}

登录后复制

要同时运行这两个程序,在您的本地机器上同时打开两个cmd。在第一个cmd界面上,编译并运行服务器端程序,然后在另一个界面上执行客户端程序。

客户端输出

D:\Java Programs>java ClientCalc
Type 1 for Addition
Type 2 for Subtraction
Type 3 for Multiplication
Type 4 for Division
Enter your choice:
1
Your Result for the given operation = 20

登录后复制

服务器端输出

D:\Java Programs>java ServerCalc
Client has requested for 1

登录后复制

当我们输入0时,连接将被终止,程序将停止执行。

结论

在本文中,我们了解了 Java 网络的一些基本概念。此外,我们还讨论了使用 UDP 的简单计算器的服务器端和客户端程序。我们发现了如何用 Java 在客户端和服务器设备之间建立连接。

以上就是使用Java通过UDP实现简单计算器

在Java中使用UDP实现一个简单的计算器的详细内容,更多请关注每日运维网(www.mryunwei.com)其它相关文章!

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论