import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
public class SocketServer {
public static void main(String[] args) throws IOException {
int port = 7000;
try(ServerSocket serverSocket = new ServerSocket(port);
Socket socket = serverSocket.accept();
DataInputStream dataInputStream = new DataInputStream(new BufferedInputStream(socket.getInputStream()));
DataOutputStream dataOutputStream = new DataOutputStream(new BufferedOutputStream(socket.getOutputStream()));){
do {
double length = dataInputStream.readDouble();
System.out.println("服务器端收到的边长数据为:" + length);
double result = Math.pow(length, 2);
dataOutputStream.writeDouble(result);
dataOutputStream.flush();
} while (dataInputStream.readInt() != 0);
}
}
}
import java.io.*;
import java.net.Socket;
import java.util.Scanner;
public class SocketClient {
public static void main(String[] args) throws IOException {
int port = 7000;
String host = "localhost";
Socket socket = new Socket(host, port);
DataInputStream dataInputStream = new DataInputStream(new BufferedInputStream(socket.getInputStream()));
DataOutputStream dataOutputStream = new DataOutputStream(new BufferedOutputStream(socket.getOutputStream()));
Scanner scanner = new Scanner(System.in);
boolean flag = true;
while (flag) {
System.out.println("请输入正方形的边长:");
double length = scanner.nextDouble();
dataOutputStream.writeDouble(length);
dataOutputStream.flush();
double result = dataInputStream.readDouble();
System.out.println("服务器返回的计算面积为:" + result);
while (true) {
System.out.println("\n是否继续计算正方形面积?(Y/N)");
String str = scanner.next();
if (str.equalsIgnoreCase("n")) {
dataOutputStream.writeInt(0);
dataOutputStream.flush();
flag = false;
break;
} else if(str.equalsIgnoreCase("y")){
dataOutputStream.writeInt(1);
dataOutputStream.flush();
break;
}
}
}
}
}
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class SocketServerM {
public static void main(String[] args) throws IOException {
int port = 7000;
int clientN = 1;
ServerSocket serverSocket = new ServerSocket(port);
ExecutorService executorService = Executors.newCachedThreadPool();
while (true) {
Socket socket = serverSocket.accept();
executorService.execute(new SingleServer(socket, clientN));
clientN++;
}
}
}
class SingleServer implements Runnable {
Socket socket;
int clientN;
public SingleServer(Socket socket, int clientN) {
this.socket = socket;
this.clientN = clientN;
}
@Override
public void run() {
try(DataInputStream dataInputStream = new DataInputStream(new BufferedInputStream(socket.getInputStream()));
DataOutputStream dataOutputStream = new DataOutputStream(new BufferedOutputStream(socket.getOutputStream()));) {
do {
double length = dataInputStream.readDouble();
System.out.println("从第" + clientN + "个客户端收到的正方形边长是:" + length);
double result = Math.pow(length, 2);
dataOutputStream.writeDouble(result);
dataOutputStream.flush();
}while (dataInputStream.readInt() != 0);
} catch (IOException e) {
e.printStackTrace();
}
}
}