给我一个使用socket编程获取网络上天气预报的客户端以及服务器的java代码
时间: 2023-12-14 21:40:20 浏览: 23
以下是一个简单的使用socket编程获取网络上天气预报的客户端以及服务器的Java代码:
服务器端代码:
```java
import java.net.*;
import java.io.*;
public class WeatherServer {
public static void main(String[] args) {
try {
ServerSocket server = new ServerSocket(9999);
System.out.println("Weather server started...");
while (true) {
Socket client = server.accept();
System.out.println("Client connected: " + client.getInetAddress());
BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
String city = in.readLine();
String weather = getWeather(city);
PrintWriter out = new PrintWriter(client.getOutputStream(), true);
out.println(weather);
client.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
private static String getWeather(String city) {
// 实现获取天气的逻辑
return "The weather of " + city + " is sunny today.";
}
}
```
客户端代码:
```java
import java.net.*;
import java.io.*;
public class WeatherClient {
public static void main(String[] args) {
try {
Socket server = new Socket("localhost", 9999);
BufferedReader console = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Enter city name: ");
String city = console.readLine();
PrintWriter out = new PrintWriter(server.getOutputStream(), true);
out.println(city);
BufferedReader in = new BufferedReader(new InputStreamReader(server.getInputStream()));
String weather = in.readLine();
System.out.println(weather);
server.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
这个例子中,服务器监听9999端口,当有客户端连接时,首先读取客户端发送来的城市信息,然后调用`getWeather`方法获取对应城市的天气信息,并将结果发送给客户端。
客户端连接到服务器后,首先从控制台读取用户输入的城市信息,然后向服务器发送请求,并读取服务器返回的天气信息并输出。