zoukankan      html  css  js  c++  java
  • 三. ServerSocket用法

    一.构造ServerSocket

    1. 构造方法
      (1)new ServerSocket( )
      (2)new ServerSocket(int port,int backlog)
      (3)new ServerSocket(int port,int backlog,InetAddress bindAddr)

      除第一种方法外,其他都会立即尝试绑定端口.第一种方便添加ServerSocket的参数,bind(SocketAddress address)手动绑定端口

    2. 设定客户端连接请求队列长度
      管理客户连接请求的任务是操作系统完成的,操作系统把连接请求存在一个队列中.该队列默认长度为50,当超过这个队列的长度限制时,操作系统会拒绝新的客户端连接请求.只有当ServerSocket的accept()方法从就绪队列中取出连接,使得队列有空位置时才能继续加入新请求.
      SoerSocket构造方法中的backlog参数显式指定请求队列的长度.当一下2种情况,该参数值无效 :
      (1)backlog值 > 操作系统的最大队列长度
      (2)backlog参数值小于等于0

    3. 关闭ServerSocket
      Serversocet的close( )方法是服务器释放占用的端口,并断开与所有客户的连接.当开启ServerSocket的线程执行完毕,ServerSocket会自动关闭.只要一个ServerSocket对象与一个端口绑定过,无论其是否已经close,isBound()方法永远返回true.所以判断ServerSocket是否正在与端口绑定:

      serverSocket.isBound() && !serverSocket.isClosed()
      

    二. ServerSocket选项

    1. SO_TIMEOUT
      该参数表示ServerSocket的accept()方法等待客户端连接的超时时间,该值默认为0,永不超时. 服务器的ServerSocket的accecpt()方法在没有客户端连接请求时会阻塞,只有接受了一个客户端请求,才能从accecpt()方法返回.setServerSocket(6*1000)表示accept()方法在阻塞6秒后一定返回,若没有客户端连接,抛出SocketTimeoutExeption
    2. SO_REUSEADDR选项
    3. SO_RCVBUF选项
      设定接收数据的缓冲区大小
  • 相关阅读:
    java中整形变量与字节数组的转换
    Oracle中的dual表的用途
    Linux环境变量的配置
    WebService 之Axis2(三)
    WebService 之Axis2(二)
    Axis2: wsdl2java 参数注解
    axis2学习——axis2的安装
    axis2学习——axis2消息处理机制
    axis2学习——客户端的开发
    axis2学习——开发自定义的axis2服务
  • 原文地址:https://www.cnblogs.com/72808ljup/p/5295144.html
Copyright © 2011-2022 走看看