在 Java 中,使用 Socket 可以实现网络通信。通常分为客户端 Socket 和服务端 ServerSocket。下面从基础概念到示例一步步说明。
ServerSocket serverSocket = new ServerSocket(8888);
8888 是监听端口Socket socket = serverSocket.accept();
accept() 是阻塞方法BufferedReader in = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(
socket.getOutputStream(), true);
String msg = in.readLine();
System.out.println("收到:" + msg);
out.println("你好,客户端");
socket.close();
serverServerSocket.close();
Socket socket = new Socket("127.0.0.1", 8888);
127.0.0.1 是本地 IP8888 是服务端端口PrintWriter out = new PrintWriter(
socket.getOutputStream(), true);
BufferedReader in = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
out.println("你好,服务端");
String response = in.readLine();
System.out.println("服务端说:" + response);
socket.close();
import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args) throws IOException {
ServerSocket server = new ServerSocket(8888);
System.out.println("服务端启动");
Socket socket = server.accept();
BufferedReader in = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(
socket.getOutputStream(), true);
String msg = in.readLine();
System.out.println("客户端:" + msg);
out.println("已收到");
socket.close();
server.close();
}
}
import java.io.*;
import java.net.*;
public class Client {
public static void main(String[] args) throws IOException {
Socket socket = new Socket("127.0.0.1", 8888);
PrintWriter out = new PrintWriter(
socket.getOutputStream(), true);
BufferedReader in = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
out.println("你好");
System.out.println("服务端:" + in.readLine());
socket.close();
}
}
✅ 端口被占用
java.net.BindException: Address already in use
→ 换端口或关闭占用程序
✅ 连接失败
java.net.ConnectException
→ IP/端口错误,或服务端未启动
✅ 中文乱码
→ 使用 InputStreamReader(socket.getInputStream(), "UTF-8")
如果你愿意,我可以:
你想学哪一种?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。