Модераторы: javastic, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> java.io.IOException: Couldn't get socket option, че за Эксепшн? 
:(
    Опции темы
Antropoid
Дата 1.11.2006, 09:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 786
Регистрация: 1.6.2006
Где: &Ukraine==Ode ssa

Репутация: 13
Всего: 16



В классе мидлета написано
Код

public static UDPDatagramConnection datagramConnection =(UDPDatagramConnection)Connector.open("datagram://:1234");


причем

Код

try {
    Datagram sendDatagram = datagramConnection.newDatagram
msg, msg.length,  "datagram://1234:111.222.333.444");
    datagramConnection.send(sendDatagram);
} catch (IOException ioe) {
    System.out.println(ioe.toString());
}


описано в 2-х разных классах и вызывается 2-мя разными тредами. Причем msg отсылается каждым тредом своя. Через некоторое время стабильной работы вылетает какое-то "java.io.IOException: Couldn't get socket option".

Принимаются все идеи, даже глупые...


--------------------
user posted image
Задыхаясь от восторга заниматься чепухой. 
PM MAIL   Вверх
W0LF
Дата 1.11.2006, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


alexander lonsky
***


Профиль
Группа: Участник
Сообщений: 1164
Регистрация: 9.2.2006
Где: Ukraine.Dnepropet rovsk

Репутация: 19
Всего: 20



ну, изначально мне кажется, что порт в конце стоять должен.
"datagram://111.222.333.444:1234"
Цитата

описано в 2-х разных классах и вызывается 2-мя разными тредами. Причем msg отсылается каждым тредом своя.

Я б это все синхронизировал бы лучше.Меньше классов - меньше памяти.
DatagramConnection держит соединение или обрывается как HttpConnection?
будем думать логически smile

Цитата

IOException - If an I/O error occurs.

I/O errors :
Цитата

CertificateException, ConnectionNotFoundException, EOFException, InterruptedIOException, UnsupportedEncodingException, UTFDataFormatException

Из этих всех к твоей ситуации подходит больше всего(ИМХО) ConnectionNotFoundException, InterruptedIOException
Попробуй измени сначала адрес. и смотри что там у тя с твоим msg творится


Это сообщение отредактировал(а) W0LF - 1.11.2006, 14:43


--------------------
iOS developer
PM MAIL WWW Skype GTalk   Вверх
Antropoid
Дата 1.11.2006, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 786
Регистрация: 1.6.2006
Где: &Ukraine==Ode ssa

Репутация: 13
Всего: 16



Ну с портами - это я, конечно, ошибся  smile 

Цитата(W0LF @  1.11.2006,  14:23 Найти цитируемый пост)
Я б это все синхронизировал бы лучше.

что именно синхронизировал? msg- локальная переменная в каждом из тредов. Если синхронизировать datagramConnection, то тоже - никак...дело в том, что есть 3-ий класс-тред, который делает
Код

Datagram datagram = datagramConnection.newDatagram(1024);
datagramConnection.receive(datagram);

receive() - блокирующая функция, причем не просто... после ее вызова в synchronized(datagramConnection) {...} - уже не зайдешь другим тредом...
Есть идеи smile 


--------------------
user posted image
Задыхаясь от восторга заниматься чепухой. 
PM MAIL   Вверх
W0LF
Дата 1.11.2006, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


alexander lonsky
***


Профиль
Группа: Участник
Сообщений: 1164
Регистрация: 9.2.2006
Где: Ukraine.Dnepropet rovsk

Репутация: 19
Всего: 20



код выложи(ну или кусок кода). так легче будет. 


--------------------
iOS developer
PM MAIL WWW Skype GTalk   Вверх
Antropoid
Дата 1.11.2006, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 786
Регистрация: 1.6.2006
Где: &Ukraine==Ode ssa

Репутация: 13
Всего: 16



Цитата(W0LF @  1.11.2006,  14:23 Найти цитируемый пост)
DatagramConnection держит соединение или обрывается как HttpConnection?

держит, а что?

Ну, сам напросился ---> 

Код

public class ReceiverThreadForServer extends Thread {
    public void run() {        
        while(true) {
            Datagram datagram = MainMidlet.datagramConnection.newDatagram(1024);                MainMidlet.datagramConnection.receive(datagram);
        }        
    }
}

public class TimerForSynchronizationMsg extends Thread {
    
    public void run() {
        while(true) {
            synchronized(this) {
            try {
                wait(15000);
            } catch(InterruptedException ie) {
            }                
            
            }
            
            byte msg[] = "Hello_1".getBytes();
            Datagram sendDatagram =
            MainMidlet.datagramConnection.newDatagram(msg, msg.length, "datagram://111.222.333.444:1234");            
            MainMidlet.datagramConnection.send(sendDatagram);
        }
    }
}

public class SenderForServer extends Thread {
    public void run() {        
              while(true) {
            synchronized(this) {
            try {
                wait();//в нужный момент делается notify() для этого объекта
            } catch(InterruptedException ie) {
            }
                
            byte msg[] = "Hello_2".getBytes();
            
            Datagram sendDatagram =
                MainMidlet.datagramConnection.newDatagram(msg, msg.length, "datagram://111.222.333.444:1234");            
            MainMidlet.datagramConnection.send(sendDatagram);
            }
              }
    }
}


все 3 треда стартую в начале (это я не написал в коде...)


--------------------
user posted image
Задыхаясь от восторга заниматься чепухой. 
PM MAIL   Вверх
W0LF
Дата 2.11.2006, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


alexander lonsky
***


Профиль
Группа: Участник
Сообщений: 1164
Регистрация: 9.2.2006
Где: Ukraine.Dnepropet rovsk

Репутация: 19
Всего: 20



Особых траблов в коде не вижу smile
Попробуй подебажить


--------------------
iOS developer
PM MAIL WWW Skype GTalk   Вверх
Antropoid
Дата 2.11.2006, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 786
Регистрация: 1.6.2006
Где: &Ukraine==Ode ssa

Репутация: 13
Всего: 16



Че здесь дебажить?.. Этот эксцепшн выпадает по праздникам... Если бы знать, что конкретно он означает...


--------------------
user posted image
Задыхаясь от восторга заниматься чепухой. 
PM MAIL   Вверх
W0LF
Дата 2.11.2006, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


alexander lonsky
***


Профиль
Группа: Участник
Сообщений: 1164
Регистрация: 9.2.2006
Где: Ukraine.Dnepropet rovsk

Репутация: 19
Всего: 20



Цитата(Antropoid @  2.11.2006,  16:59 Найти цитируемый пост)
Этот эксцепшн выпадает по праздникам

Блин. устрой этот праздник! Может это у тебя с серваком че-то? Может файрвол какой-нидь...



--------------------
iOS developer
PM MAIL WWW Skype GTalk   Вверх
Antropoid
Дата 5.11.2006, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 786
Регистрация: 1.6.2006
Где: &Ukraine==Ode ssa

Репутация: 13
Всего: 16



Цитата(W0LF @  2.11.2006,  18:05 Найти цитируемый пост)
Блин. устрой этот праздник!

Усе, праздник устроен. Этот Эксцепшн выпадает на SonyEricsson K610i систематически - через 45 мин.-1.5 часа нормальной работы, причем на Nokia 6630 - все ОК, т.е.
Цитата(W0LF @  2.11.2006,  18:05 Найти цитируемый пост)
 Может это у тебя с серваком че-то?

отпадает само собой.
Кроме того обнаружен код, который это делает - теперь нет ситуации с 3-мя потоками, т.е. проблема не в синхронизации.

Код

try {
//здесь бросается
    Datagram sendDatagram = datagramConnection.newDatagram(
"Hello", "Hello".length,  "datagram://111.222.333.444:1234");
//сюда не доходит
    datagramConnection.send(sendDatagram);
} catch (IOException ioe) {
    System.out.println(ioe.toString());
}


Да, и еще
Цитата(W0LF @  1.11.2006,  14:23 Найти цитируемый пост)
I/O errors :Цитата CertificateException, ConnectionNotFoundException, EOFException, InterruptedIOException, UnsupportedEncodingException, UTFDataFormatException Из этих всех к твоей ситуации подходит больше всего(ИМХО) ConnectionNotFoundException, InterruptedIOException

даже если написать
Код

catch (ConnectionNotFoundException cnfe) {
            setStatus("sendSynchronizationMsg() ConnectionNotFoundException " + cnfe.toString());
        } catch (javax.microedition.pki.CertificateException ce) {
            setStatus("sendSynchronizationMsg() CertificateException " + ce.toString());
        } catch (EOFException eofe) {
            setStatus("sendSynchronizationMsg() EOFException " + eofe.toString());
        } catch (UnsupportedEncodingException uee) {
            setStatus("sendSynchronizationMsg() UnsupportedEncodingException " + uee.toString());
        } catch(UTFDataFormatException utfdfe) { 
            setStatus("sendSynchronizationMsg() UTFDataFormatException " + utfdfe.toString());
        } catch (IOException ioe) {
            setStatus("sendSynchronizationMsg() IOException " + ioe.toString());
        }

где setStatus выводит ошибку на девайс, то появится именно
sendSynchronizationMsg() IOException java.io.IOException: Couldn't get socket option

Что скажете, господа?


--------------------
user posted image
Задыхаясь от восторга заниматься чепухой. 
PM MAIL   Вверх
checha70
Дата 29.3.2012, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 3.7.2008

Репутация: нет
Всего: нет



Добрый день. java.io скажите пожалуйста что это 

import javax.microedition.lcdui.Display;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDlet;
import java.io // подчеркивает постоянно??
public class mainMidlet extends MIDlet {
  Display disp;
  public void startApp() {
    disp = Display.getDisplay(this);
    draw drawClock = new draw();
    disp.setCurrent(drawClock);
  }

  public void pauseApp() {}

  public void destroyApp(boolean b) {}
}
public class mainMidlet extends MIDlet {
  Display disp;
  public void startApp() {
    disp = Display.getDisplay(this);
    draw drawClock = new draw();// вызываем класс draw() отвечающий за отображение часов
    disp.setCurrent(drawClock);
  }

  public void pauseApp() {}

  public void destroyApp(boolean b) {}
}
PM MAIL   Вверх
oxigen
Дата 29.3.2012, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 12.4.2010

Репутация: 4
Всего: 4



Эта строка
1. написана с двумя ошибками 
2. вообще тут не нужна
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

  • Прежде чем задать вопрос прочтите это!
  • Литература по Java находится здесь.
  • Литературу по Java обсуждаем здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда

  • FAQ раздела лежит здесь!
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java ME (J2ME) | Следующая тема »


 




[ Время генерации скрипта: 0.0550 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.