java使用socket TCP协议编写服务端与客户端, 客户端输入城市ID,服务器响应相应城市信息
时间: 2024-04-15 07:30:56 浏览: 113
您可以按照以下步骤使用Java编写基于TCP协议的服务端和客户端,实现客户端输入城市ID并由服务器响应相应城市信息:
1. 服务端编写:
```java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) throws IOException {
// 创建ServerSocket并指定端口
int port = 5000;
ServerSocket serverSocket = new ServerSocket(port);
System.out.println("等待客户端连接...");
// 等待客户端连接
Socket clientSocket = serverSocket.accept();
System.out.println("客户端已连接");
// 获取输入流和输出流
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
// 读取客户端发送的城市ID
String cityId = in.readLine();
System.out.println("客户端请求的城市ID为:" + cityId);
// 根据城市ID查询相应城市信息
String cityInfo = getCityInfo(cityId);
// 发送城市信息给客户端
out.println(cityInfo);
// 关闭连接
clientSocket.close();
serverSocket.close();
}
// 根据城市ID查询城市信息的方法,此处只是示例,您可以根据实际需求进行实现
private static String getCityInfo(String cityId) {
if (cityId.equals("1")) {
return "北京,中国的首都";
} else if (cityId.equals("2")) {
return "上海,中国的经济中心";
} else {
return "未找到该城市信息";
}
}
}
```
2. 客户端编写:
```java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class Client {
public static void main(String[] args) throws IOException {
// 创建Socket并指定服务端地址和端口
String serverAddress = "localhost";
int port = 5000;
Socket socket = new Socket(serverAddress, port);
// 获取输入流和输出流
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
// 从控制台读取城市ID
BufferedReader consoleIn = new BufferedReader(new InputStreamReader(System.in));
System.out.print("请输入城市ID:");
String cityId = consoleIn.readLine();
// 发送城市ID给服务端
out.println(cityId);
// 接收服务端响应的城市信息
String cityInfo = in.readLine();
System.out.println("服务端响应:" + cityInfo);
// 关闭连接
socket.close();
}
}
```
请注意,此示例中的服务器和客户端运行在同一台计算机上(localhost)。您可以在不同的计算机上运行它们,只需将服务器地址更改为服务器所在计算机的IP地址。
运行顺序:
1. 先运行Server类,启动服务器。
2. 再运行Client类,客户端连接到服务器并输入城市ID。
3. 服务器接收到城市ID后,根据ID查询相应的城市信息并返回给客户端,客户端打印出服务器响应的城市信息。
希望对您有帮助!如果有任何问题,请随时提问。
阅读全文