Java网络编程:客户端服务器通信问题实例
在Java网络编程中,客户端与服务器之间的通信通常涉及到Socket、ServerSocket、TCP/IP等协议。以下是一个简单的实例,演示了客户端向服务器发送消息的过程:
- 创建服务器端(Server Side)
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) throws IOException {
// 设置监听的端口
int port = 9999;
// 创建ServerSocket
ServerSocket serverSocket = new ServerSocket(port);
System.out.println("Server is listening on port " + port);
// 等待客户端连接
Socket socket = serverSocket.accept();
System.out.println("New connection from: " + socket.getRemoteSocketAddress()));
// 读取客户端发送的数据
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())));
String messageFromClient = in.readLine(); // 获取消息
System.out.println("Message received from client: " + messageFromClient));
// 向客户端发送消息
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()))));
out.write("Server replied to client: " + messageFromClient); // 发送消息
out.flush();
}
}
- 创建客户端(Client Side)
import java.io.*;
import java.net.*;
public class Client {
public static void main(String[] args) throws IOException {
// 客户端连接到服务器的IP和端口
String serverAddress = "localhost"; // 更改为你的服务器实际IP
int serverPort = 9999; // 保持为服务器端设置的端口
System.out.println("Connecting to Server on IP: " + serverAddress + " and Port: " + serverPort);
try (Socket socket = new Socket(serverAddress, serverPort)))) {
// 操作连接成功的Socket
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()))));
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()))));
System.out.println("Connection Established. Sending message...");
// 发送消息
String clientMessage = "Hello from Client!"; // 更改为你要发送的实际信息
out.write(clientMessage); // 发送数据
out.flush();
System.out.println("Client Message sent. Receiving server response...");
// 读取服务器响应
String serverResponse = in.readLine(); // 获取消息
System.out.println("Server Response: " + serverResponse);
} catch (SocketException e) {
System.err.println("Error Connecting to Server: " + e.getMessage());
} catch (IOException i) {
System.err.println("Error Sending Message or Receiving Response: " + i.getMessage());
}
}
}
- 运行客户端和服务器(双端运行)
分别在你的开发环境中运行这两个程序。当客户端发送消息后,你会看到服务器的响应。
还没有评论,来说两句吧...