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 streams
BufferedReader 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过程中的一些个人体会总结和借鉴,如有不当、错误的地方,请各位大佬批评指正,定当努力改正,如有侵权请联系作者删帖。)