网站制作 天津,小偷程序做的网站能用吗,政务公开网站建设的亮点和建议,网站设计的灵感来源1. 多发多收
描述#xff1a; 编写一个简单的聊天程序#xff0c;客户端可以向服务器发送多条消息#xff0c;服务器可以接收所有消息并回复。
代码示例#xff1a;
服务器端 (Server.java):
import java.io.*;
import java.net.*;
import java.util.concurrent.Execut…1. 多发多收
描述 编写一个简单的聊天程序客户端可以向服务器发送多条消息服务器可以接收所有消息并回复。
代码示例
服务器端 (Server.java):
import java.io.*;
import java.net.*;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;public class Server {public static void main(String[] args) throws IOException {// 创建 ServerSocket 对象监听指定端口ServerSocket serverSocket new ServerSocket(8080);System.out.println(服务器启动监听端口 8080);// 创建线程池处理多个客户端连接ExecutorService executor Executors.newFixedThreadPool(10);while (true) {// 阻塞等待客户端连接Socket socket serverSocket.accept();System.out.println(客户端连接成功: socket.getInetAddress().getHostAddress());// 创建线程处理客户端连接executor.execute(new ClientHandler(socket));}}// 处理客户端连接的线程类static class ClientHandler implements Runnable {private Socket socket;public ClientHandler(Socket socket) {this.socket socket;}Overridepublic void run() {try (BufferedReader in new BufferedReader(new InputStreamReader(socket.getInputStream()));PrintWriter out new PrintWriter(socket.getOutputStream(), true)) {String message;while ((message in.readLine()) ! null) {System.out.println(收到客户端消息: message);out.println(服务器回复: message);}} catch (IOException e) {e.printStackTrace();}}}
}
客户端 (Client.java):
import java.io.*;
import java.net.*;public class Client {public static void main(String[] args) throws IOException {// 创建 Socket 对象连接服务器Socket socket new Socket(127.0.0.1, 8080);// 获取输入流和输出流BufferedReader in new BufferedReader(new InputStreamReader(socket.getInputStream()));PrintWriter out new PrintWriter(socket.getOutputStream(), true);// 发送多条消息for (int i 1; i 5; i) {out.println(客户端消息 i);System.out.println(发送消息: 客户端消息 i);// 接收服务器回复String response in.readLine();System.out.println(接收回复: response);}// 关闭连接socket.close();}
}
运行步骤 运行 Server.java启动服务器。 运行 Client.java启动客户端。 客户端会发送 5 条消息服务器会逐条接收并回复。
2. 接收并回复
描述 编写一个程序服务器接收客户端发送的字符串并将其反转后回复给客户端。
代码示例
服务器端 (Server.java):
import java.io.*;
import java.net.*;public class Server {public static void main(String[] args) throws IOException {// 创建 ServerSocket 对象监听指定端口ServerSocket serverSocket new ServerSocket(8080);System.out.println(服务器启动监听端口 8080);while (true) {// 阻塞等待客户端连接Socket socket serverSocket.accept();System.out.println(客户端连接成功: socket.getInetAddress().getHostAddress());// 获取输入流和输出流BufferedReader in new BufferedReader(new InputStreamReader(socket.getInputStream()));PrintWriter out new PrintWriter(socket.getOutputStream(), true);// 接收客户端发送的消息String message in.readLine();System.out.println(收到客户端消息: message);// 反转消息String reversedMessage new StringBuilder(message).reverse().toString();// 将反转后的消息发送回客户端out.println(reversedMessage);System.out.println(发送回复: reversedMessage);// 关闭连接socket.close();}}
}
客户端 (Client.java):
import java.io.*;
import java.net.*;public class Client {public static void main(String[] args) throws IOException {// 创建 Socket 对象连接服务器Socket socket new Socket(127.0.0.1, 8080);// 获取输入流和输出流BufferedReader in new BufferedReader(new InputStreamReader(socket.getInputStream()));PrintWriter out new PrintWriter(socket.getOutputStream(), true);// 发送消息out.println(hello world);System.out.println(发送消息: hello world);// 接收服务器回复String response in.readLine();System.out.println(接收回复: response);// 关闭连接socket.close();}
}
运行步骤 运行 Server.java启动服务器。 运行 Client.java启动客户端。 客户端会发送 hello world服务器会将它反转为 dlrow olleh 并回复给客户端。
3. 上传文件
描述 编写一个程序客户端上传文件到服务器服务器保存文件到指定目录。
代码示例
服务器端 (Server.java):
import java.io.*;
import java.net.*;public class Server {public static void main(String[] args) throws IOException {// 创建 ServerSocket 对象监听指定端口ServerSocket serverSocket new ServerSocket(8080);System.out.println(服务器启动监听端口 8080);while (true) {// 阻塞等待客户端连接Socket socket serverSocket.accept();System.out.println(客户端连接成功: socket.getInetAddress().getHostAddress());// 获取输入流和输出流InputStream in socket.getInputStream();OutputStream out socket.getOutputStream();// 接收文件名BufferedReader reader new BufferedReader(new InputStreamReader(in));String fileName reader.readLine();System.out.println(接收文件名: fileName);// 创建文件输出流File file new File(upload/ fileName); // 文件保存到 upload 目录FileOutputStream fileOutputStream new FileOutputStream(file);// 接收文件内容byte[] buffer new byte[1024];int bytesRead;while ((bytesRead in.read(buffer)) ! -1) {fileOutputStream.write(buffer, 0, bytesRead);}// 发送成功信息out.write(文件上传成功.getBytes());System.out.println(文件上传成功: fileName);// 关闭流和连接fileOutputStream.close();in.close();out.close();socket.close();}}
}
客户端 (Client.java):
import java.io.*;
import java.net.*;public class Client {public static void main(String[] args) throws IOException {// 创建 Socket 对象连接服务器Socket socket new Socket(127.0.0.1, 8080);// 获取输入流和输出流InputStream in socket.getInputStream();OutputStream out socket.getOutputStream();// 上传文件File file new File(test.txt); // 上传 test.txt 文件String fileName file.getName();// 发送文件名PrintWriter writer new PrintWriter(out, true);writer.println(fileName);// 发送文件内容FileInputStream fileInputStream new FileInputStream(file);byte[] buffer new byte[1024];int bytesRead;while ((bytesRead fileInputStream.read(buffer)) ! -1) {out.write(buffer, 0, bytesRead);}// 接收服务器回复byte[] response new byte[1024];in.read(response);System.out.println(服务器回复: new String(response));// 关闭流和连接fileInputStream.close();in.close();out.close();socket.close();}
}
运行步骤 确保服务器程序中创建了名为 upload 的目录。 运行 Server.java启动服务器。 运行 Client.java启动客户端。 客户端会将 test.txt 文件上传到服务器服务器会将文件保存到 upload 目录下。
注意 以上案例仅为简单的示例实际应用中还需要考虑更多细节例如错误处理、线程安全等。 可以根据自己的需求进行修改和扩展例如增加文件大小限制、添加进度条等功能。