Java网络编程 服务器Socket

本文介绍了Java中ServerSocket的基础知识,包括构造函数、接受连接的方法、绑定及关闭操作,并详细解释了SO_TIMEOUT、SO_REUSEADDR和SO_RCVBUF等ServerSocket选项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对于接受连接的服务器,Java提供了一个ServerSocket表示服务器Socket。每个服务器Socket监听服务器机器上的一个特定端口,一旦ServerSocket建立了连接,服务器会使用一个常规的Socket对象向客户端发送数据。数据总是通过常规Socket传输。

ServerSocket的基本方法

构造函数

  • ServerSocket()
    创建非绑定服务器套接字。
  • ServerSocket(int port)
    创建绑定到特定端口的服务器套接字。
  • ServerSocket(int port, int queueLength)
    利用指定的 queueLength创建服务器套接字并将其绑定到指定的本地端口号。
  • ServerSocket(int port, int queueLength, InetAddress bindAddr)
    使用指定的端口、侦听 queueLength和要绑定到的本地 IP 地址创建服务器。

接受连接

  • Socket accept()
    侦听并接受到此套接字的连接。

accept()调用会阻塞。

绑定

使用无参数的构造函数后,可以将其绑定到一个端口。

  • void bind(SocketAddress endpoint)
    将 ServerSocket 绑定到特定地址(IP 地址和端口号)。

关闭

结束处理时一定要关闭Socket,不能依赖客户端来结束。使用完ServerSocket也应当将其关闭。

  • void close()
    关闭此套接字。

ServerSocket选项

SO_TIMEOUT

等待入站连接的时间。

  • int getSoTimeout()
    返回 SO_TIMEOUT 的设置。
  • void setSoTimeout(int timeout)
    启用/禁用带有指定超时值的 SO_TIMEOUT,以毫秒为单位。

SO_REUSEADDR

关闭 TCP 连接时,该连接可能在关闭后的一段时间内保持超时状态(通常称为 TIME_WAIT 状态或 2MSL 等待状态)。对于使用已知套接字地址或端口的应用程序而言,如果存在处于超时状态的连接(包括地址和端口),可能不能将套接字绑定到所需的 SocketAddress 上。

  • boolean getReuseAddress()
    测试是否启用 SO_REUSEADDR。
  • void setReuseAddress(boolean on)
    启用/禁用 SO_REUSEADDR 套接字选项。

SO_RCVBUF

设置服务器Socket接受客户端Socket默认接收缓冲区大小。

  • int getReceiveBufferSize()
    获取此 Socket 的 SO_RCVBUF 选项的值,该值是平台在 Socket 上输入时使用的缓冲区大小。
  • void setReceiveBufferSize(int size)
    将此 Socket 的 SO_RCVBUF 选项设置为指定的值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值