连接到ServerSocket的众多socket是共享服务器端的一个端口吗?这样的话也就意味着在操作系统级这些Socket接收数据是串行的?是否有必要开多个ServerSocket这样来保证数据传输的效率?(请不要担心客户端怎么知道连接到哪一个ServerSocket的问题)。

解决方案 »

  1.   

    不是!默认会随机找个端口建立连接,可以通过接收的Socket对象的方法获取该端口。
      

  2.   

    accept是一个端口,传输数据是随机端口
      

  3.   

    TCP/IP的协议里面好像是说共享一个端口,接收数据是由硬件实现的,至于串行,应该不是,实现上好像有一个缓冲区不是很清楚啊,求指教
      

  4.   

    Server的Socket有个监听端口,这个监听端口只是为了给Client端打开一扇门,让Client可以通知Server,“我要和你连接”,Server在收到这个通知后(也就是accept),会随机找个端口和Client进行通信。就好像你去医院看病,挂号处相当于医院的监听端口,你挂个号后(就相当于说,“我要看病”),然后挂号处的人会告诉你该去哪个相应的诊疗处去诊疗,这些诊疗处就相当于病人和医院通信的端口。不同的是医院是固定分配端口(因为就这么多个诊疗处,而且还要根据病人病情来分配),而电脑是随机分配,只要是没用过得端口。
      

  5.   

    嗯,这个问题问得好啊
    在控制台 netstat -an 就明白了 。
      

  6.   

    我只知道我们在Client会创建一个  Socket skt = new Socket('127.0.0.1', 999);
      OutputStream os = skt.getOutputStream();
      // statement ...
    第一句,他先跟对方连接,然后再通过你要告诉对方你要想什么,他们就会按照原先约定的规则进行处理了。再看要不要给你反馈信息。