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选项
      设定接收数据的缓冲区大小
  • 相关阅读:
    HOT Scene!
    Windows Live Beta ONLINE!
    Shanda EZ Mini
    HDR Lighting & Bloom Lighting
    将整张网页存成png图片
    What's NEW in C++/CLI Language
    [快讯] Visual Studio 2005和SQL Server 2005来了!
    [原创] 一劳永逸:关于C/C++中指针、数组与函数复合定义形式的直观解释
    使用模版列来控制在一个GridView中某些列有热连接,某些列无热连接
    七种武器——.NET工程师求职面试必杀技
  • 原文地址:https://www.cnblogs.com/72808ljup/p/5295144.html
Copyright © 2011-2022 走看看