SCTP连接速度很慢

时间:2015-04-15 15:27:21

标签: java tcp sctp

我正在使用java 1.7中的SCTP内置实现。我用它来编写客户端服务器应用程序。我使用以下代码:

public void sendMessage(byte[] buffer, int length, boolean flush) throws Exception {
    logger.debug("Sending message length: {}, data: \n{}", length, debugData(buffer, 0, length, 256, true));
    ByteBuffer bb = ByteBuffer.wrap(buffer, 0, length);

    final MessageInfo messageInfo = MessageInfo.createOutgoing(null, 0);
    synchronized (sc){
        sc.send(bb, messageInfo);               
    }
    logger.debug("Finished sending message length: {}", length);
}

public int readMessage(byte[] readBuf) throws Exception {
    ByteBuffer buf = ByteBuffer.wrap(readBuf, 0, BinaryMessageBase.BUFFER_SIZE);
    MessageInfo messageInfo = null;
    do {
        try {
            messageInfo = sc.receive(buf, null, null);
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println(e.getMessage());
            throw e;
        }
    } while (messageInfo == null || !messageInfo.isComplete());

    return messageInfo.bytes();
}
代码中引用的

sc是SctpChannel对象。 readMessage方法只是从线路上抓取一条消息,并将其放入缓冲区。然后sc.recieve填充MessageInfo,直到捕获完整的消息。使用jvisualvm进行分析表明,readMessage方法是迄今为止最慢的。我无法真正看到任何优化,因为它没有太多代码。我们将非常感谢您的想法。

0 个答案:

没有答案