NIO Socket, selector.select() зависает навсегда [закрыто]JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 NIO Socket, selector.select() зависает навсегда [закрыто]

Сообщение Anonymous »

Я переписываю программу NIO без блочных сокетов для Linux, теперь разрабатываю ее для Windows 10 Enterprise, Java 11 на eclipse 4.24.0. У моего сокета есть две задачи: 1) читать данные из ICS (длина всегда 126) и записывать в Oracle, другое приложение CTRL обрабатывает данные и записывает ответы в базу данных (len = 126), поэтому задача 2): прочитать ответы CTRL и отправляется в ICS.

К сожалению, моя программа вечно зависает в
selector.select() или всегда возвращает 0 по тайм-ауту.
Пожалуйста, помогите.

Код: Выделить всё

//To reduce size, I skipped unrelated functions.
//     Port 1515, buffer size 126
private void setupSocketConnOperations() throws MarisCommsException {
ServerSocketChannel serverChannel = null;
Selector selector = null;
try {
serverChannel = ServerSocketChannel.open();
selector = Selector.open();
serverChannel.configureBlocking(false);
int ops = serverChannel.validOps();

InetSocketAddress socktAddr = new InetSocketAddress( "localhost", 1515);
serverChannel.bind(socktAddr);
LoggerService.logSocket("Server socket bound on port " + socketPortNo);
serverChannel.register(selector, SelectionKey.OP_ACCEPT);
int readyCount = 0;
LoggerService.logSocket("About to enter infinite loop");
while (true) {
try{
readyCount = selector.select(5000); // with timeout, hang on 5000, and then always return 0. if no timeout, hang on forever at here
if (readyCount == 0) {
Thread.sleep(500);
continue;
}
Set readyKeys = selector.selectedKeys();
Iterator i = readyKeys.iterator();
IMarisCommsMessageProtocol commsMsgProtocol = new MarisCommsMessageProtocol(buffer_size);// 126

while (i.hasNext()) {
SelectionKey key = (SelectionKey) i.next();
i.remove();
if (key.isAcceptable()) {
try {
commsMsgProtocol.handleAccept(key);
}
catch (MarisCommsException e) {
LoggerService.logSocket("Failed to accept connection request from client: " + e.getMessage());
}
continue;
}

if (key.isValid() && key.isReadable()) {
try {
commsMsgProtocol.handleRead(key);
}
catch (MarisCommsException e) {
LoggerService.logSocket("Error during message read: " + e.getMessage());
}
}

if (key.isValid() && key.isWritable()) {  ///TODO comment out msg sent
try {
commsMsgProtocol.handleWrite(key);
}
catch (MarisCommsException e) {
LoggerService.logSocket("Error during message write (Maris -> ICS: " + e.getMessage());
}
}
}
}catch (Exception e) {
Utility.handleException(e)
return;
}
finally {

}
}
}catch(Exception e2) {

}
}
при отладке в java.noi без тайм-аута процесс исчезает в следующей функции при попытке войти/перейти/вернуться:
Пожалуйста посмотрите на строку BootLoader.getNativeLibraries().find(entryName) в следующей
функции. Когда отладочная программа переходит к функции поиска и возвращается к этой строке в отладочном экспрессе, значение представляет собой большое
число, но разное в каждой отладке, например 140708885261832.
Теперь , если я нажму F5/F6/F7, курсор отладки исчезнет и больше не будет возможности контролировать
отладку.

Код: Выделить всё

package java.lang; class ClassLoader;
parameter:  loader=null, entryName =Java_sun_nio_ch_WEPoll_wait, no timeout.

static long findNative(ClassLoader loader, String entryName) {
if (loader == null) {
return BootLoader.getNativeLibraries().find(entryName);
} else {
return loader.libraries.find(entryName);
}
}
Пожалуйста, помогите.

Подробнее здесь: https://stackoverflow.com/questions/791 ... on-forever
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • NIO Socket, selector.select() зависает навсегда [закрыто]
    Anonymous » » в форуме JAVA
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • NIO Socket, selector.select() зависает навсегда [закрыто]
    Anonymous » » в форуме JAVA
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • NIO Socket, selector.select() зависает навсегда
    Anonymous » » в форуме JAVA
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Нажмите кнопку на асинхронном веб-сайте. Невозможно найти элемент: {"method": "css selector", "selector":".Icon__oBwY4"}
    Anonymous » » в форуме Python
    0 Ответы
    35 Просмотры
    Последнее сообщение Anonymous
  • Нажмите кнопку на асинхронном веб-сайте. Невозможно найти элемент: {"method": "css selector", "selector":".Icon__oBwY4"}
    Anonymous » » в форуме Python
    0 Ответы
    31 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»