Java 网络编程详解:ServerSocket、Socket、InetAddress.

Java 网络编程详解:ServerSocket、Socket、InetAddress

本篇文章详细介绍 Java 中用于网络通信的三个重要类:ServerSocketSocketInetAddress,并为每个方法提供了中文解释和独立示例,作为学习笔记。


📘 ServerSocket 类

构造方法

1. public ServerSocket(int port)

创建绑定到特定端口的服务器套接字。

import java.net.*;

public class ServerExample1 {
    public static void main(String[] args) throws Exception {
        ServerSocket server = new ServerSocket(8888);
        System.out.println("服务器已启动,监听端口 8888...");
        server.close();
    }
}

2. public ServerSocket(int port, int backlog)

指定连接请求队列的长度 backlog。

ServerSocket server = new ServerSocket(8888, 50);

3. public ServerSocket(int port, int backlog, InetAddress address)

绑定到指定的 IP 和端口。

InetAddress addr = InetAddress.getByName("127.0.0.1");
ServerSocket server = new ServerSocket(8888, 50, addr);

4. public ServerSocket()

创建未绑定的套接字。

ServerSocket server = new ServerSocket();
server.bind(new InetSocketAddress(8888));

常用方法

1. getLocalPort()

返回此套接字在其上侦听的端口。

ServerSocket server = new ServerSocket(8888);
System.out.println(server.getLocalPort()); // 输出 8888
server.close();

2. accept()

接收一个客户端连接请求。

Socket client = server.accept();

3. setSoTimeout(int timeout)

设置 accept 的超时时间。

server.setSoTimeout(5000); // 设置超时 5 秒

4. bind(SocketAddress host, int backlog)

绑定到指定地址。

ServerSocket server = new ServerSocket();
server.bind(new InetSocketAddress("127.0.0.1", 9999), 100);

📘 Socket 类

构造方法

1. Socket(String host, int port)

Socket socket = new Socket("localhost", 8888);

2. Socket(InetAddress host, int port)

InetAddress address = InetAddress.getByName("localhost");
Socket socket = new Socket(address, 8888);

3. Socket(String host, int port, InetAddress localAddr, int localPort)

InetAddress localAddr = InetAddress.getLocalHost();
Socket socket = new Socket("localhost", 8888, localAddr, 6666);

4. Socket(InetAddress host, int port, InetAddress localAddr, int localPort)

InetAddress remote = InetAddress.getByName("localhost");
InetAddress local = InetAddress.getLocalHost();
Socket socket = new Socket(remote, 8888, local, 6666);

5. Socket()

创建未连接的 socket。

Socket socket = new Socket();
socket.connect(new InetSocketAddress("localhost", 8888), 3000);

常用方法

1. connect(SocketAddress host, int timeout)

Socket socket = new Socket();
socket.connect(new InetSocketAddress("localhost", 8888), 5000);

2. getInetAddress()

System.out.println(socket.getInetAddress());

3. getPort()

System.out.println(socket.getPort());

4. getLocalPort()

System.out.println(socket.getLocalPort());

5. getRemoteSocketAddress()

System.out.println(socket.getRemoteSocketAddress());

6. getInputStream() / getOutputStream()

InputStream in = socket.getInputStream();
OutputStream out = socket.getOutputStream();

7. close()

socket.close();

📘 InetAddress 类

常用方法

1. getByAddress(byte[] addr)

InetAddress addr = InetAddress.getByAddress(new byte[]{127,0,0,1});
System.out.println(addr);  

2. getByAddress(String host, byte[] addr)

InetAddress addr = InetAddress.getByAddress("localhost", new byte[]{127,0,0,1});
System.out.println(addr);

3. getByName(String host)

InetAddress address = InetAddress.getByName("www.baidu.com");
System.out.println(address);

4. getHostAddress()

InetAddress address = InetAddress.getByName("localhost");
System.out.println(address.getHostAddress()); // 输出 127.0.0.1

5. getHostName()

System.out.println(address.getHostName());

6. getLocalHost()

InetAddress local = InetAddress.getLocalHost();
System.out.println(local);

7. toString()

System.out.println(address.toString());

✅ 本文每个方法尽可能提供了独立、最小可运行的 Java 示例,便于学习和博客整理。

posted @ 2025-08-03 21:38  AlphaGeek  阅读(66)  评论(0)    收藏  举报