利用java socket 服务端开启5001端口,监听客户端请求,根据客户端上送的地区号,将对应的地区名称返回给客户端
时间: 2023-10-08 13:09:27 浏览: 37
好的,以下是一个简单的Java Socket服务端代码实现:
```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 AreaServer {
public static void main(String[] args) {
try {
// 创建ServerSocket对象,监听5001端口
ServerSocket serverSocket = new ServerSocket(5001);
System.out.println("Server started, waiting for client...");
while (true) {
// 监听客户端请求
Socket socket = serverSocket.accept();
System.out.println("Client connected!");
// 读取客户端传来的地区号
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String areaCode = reader.readLine();
// 根据地区号查询地区名称
String areaName = getAreaName(areaCode);
// 返回地区名称给客户端
PrintWriter writer = new PrintWriter(socket.getOutputStream());
writer.println(areaName);
writer.flush();
// 关闭流和Socket连接
reader.close();
writer.close();
socket.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
// 根据地区号查询地区名称的方法
private static String getAreaName(String areaCode) {
// 这里可以连接数据库或者使用其他数据源查询地区名称
String areaName = "";
switch (areaCode) {
case "110000":
areaName = "北京市";
break;
case "120000":
areaName = "天津市";
break;
case "130000":
areaName = "河北省";
break;
// 其他省市省略...
default:
areaName = "未知地区";
break;
}
return areaName;
}
}
```
客户端代码实现:
```java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class AreaClient {
public static void main(String[] args) {
try {
// 连接服务端
Socket socket = new Socket("localhost", 5001);
// 向服务端传送地区号
PrintWriter writer = new PrintWriter(socket.getOutputStream());
writer.println("110000");
writer.flush();
// 读取服务端返回的地区名称
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String areaName = reader.readLine();
System.out.println("Area name: " + areaName);
// 关闭流和Socket连接
writer.close();
reader.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
这样,当客户端连接到服务端后,服务端会读取客户端传来的地区号,并根据地区号查询地区名称,然后返回给客户端。