Java 中的 Socket(套接字) 主要用于网络通信,最常见的是基于 TCP 的客户端–服务器通信。下面我用最基础、最容易理解的方式给你讲清楚。
客户端 Socket <-------- TCP连接 --------> 服务端 ServerSocket
import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args) throws IOException {
// 1. 创建服务端Socket,监听端口 8888
ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("服务器启动,等待连接...");
// 2. 等待客户端连接(阻塞)
Socket socket = serverSocket.accept();
System.out.println("客户端已连接");
// 3. 获取输入流(接收客户端消息)
BufferedReader in = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
// 4. 获取输出流(向客户端发送消息)
PrintWriter out = new PrintWriter(
socket.getOutputStream(), true);
String msg = in.readLine();
System.out.println("收到客户端消息:" + msg);
out.println("你好,客户端!");
// 5. 关闭资源
socket.close();
serverSocket.close();
}
}
import java.io.*;
import java.net.*;
public class Client {
public static void main(String[] args) throws IOException {
// 1. 连接服务端(IP + 端口)
Socket socket = new Socket("localhost", 8888);
// 2. 发送消息
PrintWriter out = new PrintWriter(
socket.getOutputStream(), true);
out.println("你好,服务器!");
// 3. 接收消息
BufferedReader in = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
String response = in.readLine();
System.out.println("服务器回复:" + response);
// 4. 关闭
socket.close();
}
}
ServerSocket ss = new ServerSocket(port);
Socket socket = ss.accept(); // 等待连接
Socket socket = new Socket(ip, port);
socket.getInputStream(); // 读
socket.getOutputStream(); // 写
✅ 端口范围:1024 ~ 65535
✅ 异常必须处理:IOException
✅ 用完要 close()
✅ readLine() 必须换行(\n 或 println)
如果你愿意,我可以: ✅ 写一个多线程聊天室 ✅ 用 NIO 写高性能 Socket ✅ 帮你调试你现在的代码
你现在是刚学 Java 网络编程,还是做项目遇到问题?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。