zoukankan      html  css  js  c++  java
  • TCP_DB_中间件_遗留问题

    1、一些经验

      1.1、Delphi客户端中 Block的socket,使用 读取超时的话,会有大约1秒的时间等待...很影响使用体验...于是 放弃超时读取的方式,改为 在每次读取到TCP数据包时 都去做一个判断 是否接收到了一个 完整的TCP包

      1.2、在 socket断开时(不管是 优雅断开 还是 异常断开),接收缓冲区的数据都要 做处理(将它们无效掉 或者 别的处理手段)

    2、JAVA AIO,无法 2次投递accept操作

    3、JAVA AIO,接收操作 :采用接收到TCP数据后 循环超时读取数据 直至读取超时 此时表明暂无数据可以接收了,然后再对 接收到的数据做处理

      3.1、问题:接收操作 一旦超时,这个AsynchronousSocketChannel就处于 超时状态,无法继续 投递接收操作...

      3.2、修改:不使用 超时接收数据的方式,在每次接收到数据之后 都判断是否接收到了一个完整的TCP包,然后在做处理。(类似上面的 1.1中 Delphi客户端中的处理方式)

    4、暂时,只 投递了一次 accept操作,客户端数量多的话,是否够用?

    5、一个AsynchronousSocketChannel 只投递了一个接收操作,大数据量时 是否够用?

    6、

    7、

    8、

  • 相关阅读:
    高级I/O之存储映射I/O
    高级I/O之readn和writen函数
    高级I/O之readv和writev函数
    高级I/O之异步I/O
    高级I/O之I/O多路转接——pool、select
    高级I/O之STREAMS
    高级I/O之记录锁
    高级I/O之非阻塞I/O
    用于守护进程的出错处理函数
    守护进程之客户进程-服务器进程模型
  • 原文地址:https://www.cnblogs.com/javaskill/p/6140046.html
Copyright © 2011-2022 走看看