zoukankan      html  css  js  c++  java
  • socket---tcp初始化配置

     

     1、创建socket,这样的构造函数有很多,但常用的就是创建一个无参的构造的实例,这样可以连接server之前进行一些设置;而带参的有好几个都是实例化同时就connect了,所以用无参;接下来创建无参然后bind,如果不板顶端口,客户端会随机分配一个端口

    用bind:可以设置一个连接超时时间

    2、 接下来初始化设置socket

     

      socket.setSOtimeout()是设置socket阻塞时间:connect()or accept() 方法有连接阻塞超时时间设置了,所以这里就是read阻塞超时时间设置,超时异常叫做socketTimeoutException ,服务端都有这个超时异常设置

    下面在执行

    String echo = socketBufferedReader.readLine();
    代码超时,这个代码是客户端read取服务端返回的响应数据,由于迟迟没有得到服务端响应就超时了。

    下面的这个异常是端口被占用,或者serverSocket未启动服务或 server端ipping不通    --------这个不是超时时间的设置,这个超时时间在connect方法的参数设置。

     下面是侦听客户端请求连接超时

    socket.setReuseAddress() socket连接远程,连接关闭之后一般是在2分钟内不准再次使用端口,这个设置就可以直接使用了

    socket.setSoLinger 如果是false,socket关闭后,会将缓冲区数据输出,而true,直接抛弃缓冲区数据

    3、服务端设置:

     

     这个backlog是等待最大连接数,bind操作后就已经启动serverSocket,接下来serverSocket要创建一个个socket分配各个连接到客户端。如果这时有50个客户端等待连接serverSocket,是可以的,如果51个,那么51个客户端就报异常。  

    先创建一个空的serverSocket,然后设置,再bind,因为bind后就启动了,这时再设置就无效了,所以bind不能放在createServetSocket中

    ServerSocket serverSocket = createServerSocket();
    initServerSocket(serverSocket);
    serverSocket.bind(new InetSocketAddress(port),50);


  • 相关阅读:
    完爆!用边缘容器,竟能秒级实现团队七八人一周的工作量
    手把手教你使用 cert-manager 签发免费证书
    手把手教你使用 Nginx Ingress 实现金丝雀发布
    Codeforces 534B Covered Path 贪心
    Codeforces 534A Exam 水
    Topcoder open 2015 Round 1A 250 Similars 枚举 + 状压
    Topcoder SRM 654 DIV1 500 FoldingPaper2 递归 + 枚举
    Topcoder SRM655 DIV2 250 BichromeBoard 水
    2015 Google code jam Qualification Round B 枚举 + 贪心
    2015 Google code jam Qualification Round A 水
  • 原文地址:https://www.cnblogs.com/fpcbk/p/13744471.html
Copyright © 2011-2022 走看看