Я создаю клиент и сервер с простым диаметром (Link to sources). Клиент должен отправлять сообщения 10000 ccr, но в wirehark я вижу только ~ 300 ccr сообщений. Другие сообщения накладывали таймауты на клиента. Я запускаю сервер и клиент на разных компьютерах с окнами 7. Я нашел в источниках JDiameter line where jdiameter sended ccr (line 280), и я думаю, что в случае отправки буфера сокета полный ccr не отсканирован. Добавить перед строкой 280 этот кодПочему java.nio.SocketChannel не отправляет данные (Jdiameter)?
while(bytes.hasRemaining())
Клиент посылает ~ 9900 CCR, но очень slow.I тестирование клиента на другом сервере диаметром wroted на C++, клиент (на jdiameter без моих изменений) отправить ~ 7000 CCR, но это сервер, размещенный на debian.
Я не знаю, как решить эту проблему, спасибо за любую помощь.
Я увеличиваю прием и отправку буферов сокетов в 1mb в TcpTransportClient.intialize: socketChannel.socket(). SetReceiveBufferSize (размер); socketChannel.socket(). SetSendBufferSize (размер); И добавьте этот код для отправкиMessage: rc = socketChannel.write (bytes); if (rc == 0) while (bytes.hasRemaining()) { Thread.sleep (10l); rc = socketChannel.write (байты); } Работает отлично с сервером диаметра на C++ на debian, но на сервере jdiameter проблема не решена. – MadCrank
@MadCrank Повышение размеров буфера не ускоряет приемник, и это действительно только отвлекает проблему. Вы не отправили свой исходный код, но ни 'while (bytes.hasRemaining())' и 'while (rc
EJP
Нужно ли отменить регистрацию OP_READ? – mike