JAVA学习-练习试用Java实现“网络编程”
问题:
编写一个简单的Java客户端和服务器程序,实现基本的网络通信,如发送和接收消息。
解答思路:
以下是一个简单的Java客户端和服务器程序,实现了基本的网络通信。服务器端监听客户端的连接请求,并接收发送的消息;客户端连接到服务器并发送消息,服务器接收消息并打印出来。
首先是服务器端的代码:
import java.io.*;import java.net.*;public class SimpleServer {public static void main(String[] args) {try (ServerSocket serverSocket = new ServerSocket(1234)) {System.out.println("Server is listening on port 1234");Socket socket = serverSocket.accept();System.out.println("New client connected");// Get input and output streamsBufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream()));PrintWriter output = new PrintWriter(socket.getOutputStream(), true);String clientMessage, serverMessage;while ((clientMessage = input.readLine()) != null) {System.out.println("Received: " + clientMessage);serverMessage = "Echo from server: " + clientMessage;output.println(serverMessage);}} catch (IOException e) {e.printStackTrace();}}}
接下来是客户端的代码:
import java.io.*;import java.net.*;public class SimpleClient {public static void main(String[] args) {String hostname = "localhost"; // 服务器的主机名或IP地址int port = 1234; // 服务器监听的端口号try (Socket socket = new Socket(hostname, port);PrintWriter out = new PrintWriter(socket.getOutputStream(), true);BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in))) {System.out.println("Connected to server");String userInput;while ((userInput = stdIn.readLine()) != null) {out.println(userInput);System.out.println("Server response: " + in.readLine());}} catch (IOException e) {e.printStackTrace();}}}
要运行这个简单的网络通信程序,需按照以下步骤操作:
1. 将服务器端代码保存为'SimpleServer.java',并编译它:'javac SimpleServer.java'。
2. 将客户端代码保存为'SimpleClient.java',并编译它:'javac SimpleClient.java'。
3. 在一个新的命令行窗口中,运行服务器程序:'java SimpleServer'。
4. 在另一个命令行窗口中,运行客户端程序:'java SimpleClient'。
5. 在客户端的命令行中输入消息,然后按Enter键。服务器将接收这个消息,并回显(echo)同样的消息给客户端。
请确保服务器和客户端运行在不同的命令行窗口中,并且客户端的主机名和端口号与服务器匹配。
(文章为作者在学习java过程中的一些个人体会总结和借鉴,如有不当、错误的地方,请各位大佬批评指正,定当努力改正,如有侵权请联系作者删帖。)