ServerSocket有一个构造函数为ServerSocket(int port,int maxQueue)
其中maxQueue代表最大队列长度,请问:
队列用来存储什么?是并发请求的用户吗,还是已连接的用户?
队列长度是什么含义?
另外,怎么接收两个同一时刻(不是同一时间)到来的两个或多个请求?
谢谢。

解决方案 »

  1.   

    好象默认是50个,就是说最多只有50个客户能连到你机器上
    serversocket svr=new serversocket(4000);
    while(true)
    {  
        socket soc=svr.appcet();
        ....
    ....
    ....
    }
      

  2.   

    maxQueue代表最大队列长度这个参数是表示服务器可以接受请求的客户端Socket的最大数量。
    这个和并发是没有关系的,accept()方法会一直阻塞知道接受一个客户端Socket。
    直到这个最大的限制,之后在有请求连接就不能连上了。。
      

  3.   

    谢谢两位。
    是不是说:这个队列是存放连接上服务器的客户的信息的(比如客户的Socket或者其它)?
    当一个客户断开连接时,队列也将该客户删除。
    accpet()应该是只接收一个连接请求吧?
    如果同一时刻有两个客户连接请求,accpet()接收哪一个?谢谢
      

  4.   

    恩JVM自己会判断哪个先,这个不用用户考虑
      

  5.   

    to: sunjie1981() 
    JVM自己会判断哪个先,这个不用用户考虑
    --------------------------------------- 
    两个请求是同一时刻到来的,会有先后之分吗?
      

  6.   

    to: sunjie1981()
    你的话好简短啊!详细说一下吧,JVM怎样判断,和操作系统或者硬件有关系吗?
    我在毕业设计利用到了socket编程,但这些书上都没说过,我担心毕业答辩不好弄。谢谢了
      

  7.   

    To:irvine007(┣━┫Rvine)
    类似于这种底层实现
    一般都会有一个队列,并且有并发控制的。
    听说过生产者、消费者理论吗?我想你知道临界区的概念
    应该好理解的。
    -------------------------------------------------
    Serversocket的队列是不是就是你说的队列?
    另外,并发指的是同一时刻的多个操作还是同一时间的多个操作,是宏观还是微观概念?谢谢
      

  8.   

    队列长度好像也不是最大连接数,两者之间没什么直接关系。
    这个队列只是存放连接请求的,客户请求连接时入队,请求被accpet后出队。
    高手们,我的观点对吗?
    另外,连接上服务端的客户对于服务器来说,也是并发用户吗?