1.创建一个java project 项目,创建Client和Server 两个类
2.Client 类的内容
package web_service;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
public class WeatherClient {
public static void main(String[] args) throws UnknownHostException, IOException{
Scanner in = new Scanner(System.in);
//1.创建Socket对象,和服务端建立连接
Socket socket = new Socket("192.168.8.235",12345);
DataInputStream dis = null;
DataOutputStream dos = null;
//2.发送城市名称
boolean falg = true;
while (falg) {
dos = new DataOutputStream(socket.getOutputStream());
String clientMessageString = in.next();
dos.writeUTF(clientMessageString);
//System.out.println("请求查询天气: 北京");
//3.接受返回结果使用输入流
dis = new DataInputStream(socket.getInputStream());
String result = dis.readUTF();
System.out.println(result);
if ("exit".equals(clientMessageString)) {
//4.关闭流
dis.close();
dos.close();
falg = false;
}
}
}
}
3.Server类的内容
package web_service;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
public class WeatherServer {
public static void main(String[] args) throws IOException{
final Scanner in = new Scanner(System.in);
// 1.创建ServerSocket对象
ServerSocket serverSocket = new ServerSocket(12345);
while(true){
// 2.等待客户端连接,阻塞的方法
final Socket socket = serverSocket.accept();
Runnable runnable = new Runnable(){
@Override
public void run(){
try{
boolean falg = true;
DataInputStream dis = null;
DataOutputStream dos = null;
while (falg) {
dis = new DataInputStream(socket.getInputStream());
String cityName = dis.readUTF();
System.out.println(cityName);
// 4.根据城市名查询天气
String result = in.next();
System.out.println(result);
// 5.返回查询结果,使用输出流。
dos = new DataOutputStream(socket.getOutputStream());
dos.writeUTF(result);
if ("exit".equals(cityName)) {
// 6.关闭流
System.out.println(cityName);
dis.close();
dos.close();
falg = false;
}
}
// 3.使用输入流接受客户端发送的请求
}catch(Exception e){
e.printStackTrace();
}
}
};
//启动线程
new Thread(runnable).start();
}
}
}
4.先运行Server 再运行Client 客户端像服务端发送消息,服务端接受消息,也可以回复客户端。当客户端输入exit 客户端停止运行。