我的NIO套接字服务器丢失了数据

时间:2011-04-21 06:48:10

标签: java sockets solaris nio

我们的服务器是Solaris 10,jdk是1.5.0_12-b04。并且客户端总是报告读取超时。

我们的功能始终是请求 - 响应模式,我们在客户端(Window)上使用wireshark,服务器端是snoop。我们嗅探流量数据并找到服务器端写入数据但snoop不捕获它。然后客户端等待响应直到超时。

服务器端是套接字NIO服务器,代码类似

int ret = 0;
        int writeBytes = 0;

        while ((ret = cb.write(buf)) > 0) {

            writeBytes += ret;
            if (buf.remaining() > 0) {
            } else {
                break;
            }
        }

        if (  _log.isDebugEnabled())
            _log.debug("in writeBuf , writeBytes  " + writeBytes +" , ret "+ ret);


        if (ret < 0) {

        } else {
            if( buf.remaining()> 0 ){

            }else {
                // packet buffer
            }
        }

_log是一个log4j Logger,我在日志文件中注意到“在writeBuf中,writeBytes 52 ret 52”

SocketChannel.write已返回结果&gt; 0和总buff大小是52个字节,但是snoop没有捕获任何东西。

为什么呢?这里发生了什么?

0 个答案:

没有答案