Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java ME (J2ME) > j2me socket обрыв соединения |
Автор: gregson 17.11.2009, 04:50 | ||
Проблема при попытке сервера отослать длинную строку, на разных моделях телефонов по разному: на одних соединение рвется при длине строки больше 1.5кб, на других и того меньше, на третьих вообще не рвется. Проблема проявляется только при использовании GPRS интернета, т.е. когда запускаю приложение через wifi соединение все отлично работает с любыми объемами. Внимание вопрос (гонг!): В чем может быть причина разрыва соединение при получении телефоном длинной строки!? sc = (SocketConnection) Connector.open("socket://" + FHost + ":" + FPort); sc.setSocketOption(sc.KEEPALIVE, 1); sc.setSocketOption(sc.RCVBUF, 16384); sc делал раньше streamconnection, сейчас поменял на socket чтобы установить размер буфера чтения, не помогло :/ также пробовали комментить строку try { Thread.sleep(250); } catch (Exception e) {} на случай если данные идут подряд двумя пакетами это могло вызывать exception исходим из того что сервер посылающий длинную строку отдает ее пакетизацию (!) протоколу TCP, но вообще-то пробовали и сервером разбивать строку на две и отсылать подряд чтобы длина отсылаемой строки не превышала 800 байт, результата особо небыло. Протокол обмена подразумевает что сначала идет 4х байтовая длина строки, потом сама строка. Телефон получает строку и успевает обработать ее и вывести на экран на долю секунды, потом происходит разрыв соединения с сервером. Кстате eclipse ругается на sc.KEEPALIVE и sc.RCVBUF типа некорректно я их использую Если нужны еще куски кода спрашивайте! |
Автор: gregson 18.11.2009, 03:45 |
я что-то не то спросил? вопрос слишком ламерский? подскажите хоть где начать копать, в чем может быть отличие передачи данных через gprs, кроме скорости передачи!? |
Автор: math64 18.11.2009, 11:28 |
Возможно, при использовании wap сообщение режется на мелкие кусочки, а при gprs нет. (но это только моё предположение) |