客户端和服务端的简单通信
客户端给服务器端发送一句话:
项目结构:

服务端:Server.java
package com.lvshitech.server;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
/* 服务器端:接收客户端发送过来的数据 */
public class Server {
@SuppressWarnings("resource")
public static void main(String[] args) throws IOException {
// 开放一个窗口
ServerSocket serverSocket = new ServerSocket(6789);
while(true) {
// 创建一个Socket,用于连接服务器和客户端
Socket socket = serverSocket.accept();
// 获取输入流(信息是从客户端发送到服务器端的,所以是输入流)
InputStream in = socket.getInputStream();
// 将字节流封装成字符流,提高传输效率
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
// 读取客户端数据
String clientMsg = reader.readLine();
// 打印输出
System.out.println("客户端说:" + clientMsg);
// 关闭流
reader.close();
in.close();
socket.close();
}
}
}
客户端:Client.java
package com.lvshitech.client;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.net.UnknownHostException;
/* 客户端:给服务器端发送数据 */
public class Client {
public static void main(String[] args) throws UnknownHostException, IOException {
// 创建一个Socket对象,用于连接服务器端,参数:主机IP,端口,说明连接的是哪台主机的哪个窗口
Socket socket = new Socket("192.168.1.5", 6789);
// 获取输出流(信息是从客户端发送到服务器端的,所以是输出流)
OutputStream out = socket.getOutputStream();
// 封装成字符输出流
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(out));
// 向服务器端发送信息
writer.write("你好!吃饭了吗?");
// 关闭流
writer.close();
out.close();
socket.close();
}
}
运行:先运行服务器端,再运行客户端,如果先服务器端不启动,直接运行客户端,就会出现连接不上的异常

不断执行客户端的结果

浙公网安备 33010602011771号