Java程序:利用套接字、多线程进行网络编程,求矩形的面积
时间: 2024-02-27 19:58:01 浏览: 28
以下是一个使用Java编写的简单示例程序,用于利用套接字和多线程进行网络编程,计算矩形的面积:
```java
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class RectangleServer {
public static void main(String[] args) {
try {
ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("服务器已启动...");
while (true) {
Socket clientSocket = serverSocket.accept();
System.out.println("客户端连接成功...");
Thread thread = new Thread(new RectangleHandler(clientSocket));
thread.start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
private static class RectangleHandler implements Runnable {
private Socket clientSocket;
public RectangleHandler(Socket clientSocket) {
this.clientSocket = clientSocket;
}
@Override
public void run() {
try {
InputStream input = clientSocket.getInputStream();
OutputStream output = clientSocket.getOutputStream();
byte[] lengthBytes = new byte[1024];
int lengthLen = input.read(lengthBytes);
String lengthStr = new String(lengthBytes, 0, lengthLen);
byte[] widthBytes = new byte[1024];
int widthLen = input.read(widthBytes);
String widthStr = new String(widthBytes, 0, widthLen);
int length = Integer.parseInt(lengthStr.trim());
int width = Integer.parseInt(widthStr.trim());
int area = length * width;
String areaStr = Integer.toString(area);
output.write(areaStr.getBytes());
input.close();
output.close();
clientSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
```
在该程序中,我们使用 ServerSocket 类创建了一个服务器套接字,监听 8888 端口。当客户端连接到该端口时,程序将创建一个新的线程来处理客户端请求。在 RectangleHandler 类中,我们接收客户端发送的矩形参数,计算矩形面积并将结果发送回客户端。
以下是一个使用Java编写的客户端程序,用于向服务器发送矩形参数,并接收服务器返回的面积值:
```java
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
public class RectangleClient {
public static void main(String[] args) {
Socket socket = null;
InputStream input = null;
OutputStream output = null;
try {
socket = new Socket("localhost", 8888);
input = socket.getInputStream();
output = socket.getOutputStream();
int length = 4;
int width = 5;
String lengthStr = Integer.toString(length);
output.write(lengthStr.getBytes());
String widthStr = Integer.toString(width);
output.write(widthStr.getBytes());
byte[] areaBytes = new byte[1024];
int areaLen = input.read(areaBytes);
String areaStr = new String(areaBytes, 0, areaLen);
int area = Integer.parseInt(areaStr.trim());
System.out.println("矩形的面积为:" + area);
input.close();
output.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
在该程序中,我们创建了一个套接字并连接到服务器的 8888 端口。我们发送矩形参数(长和宽),并接收服务器返回的面积值。最后,我们将计算出的矩形面积打印到控制台上。