java socket



Serversocket java

Автор Ёторожев Сергей задал вопрос в разделе Другие языки и технологии

JAVA - Server - Socket как обнаружить разрыв соединения.. Метод какой-нить есть? и получил лучший ответ

Ответ от Непростой Гусь[гуру]
Если бы я сейчас не прибывал в блаженном утреннем состоянии, то посоветовал бы тебе убиться об стену.
Простой вопрос. Никогда не интересовался, почему когда пишешь такие закорючки как ss.accept(); или new ServerSocket(Integer.valueOf("1111")) глупый эклипс/нетбинс/джавак (в консольке для "реальных" пацанов) выводит какие-то глупые ошибки и предлагает их исправить добавлением к описанию функции строчки throws IOException?
Дело в том, что добрые разработчики Джавы решили каждый раз тыкать носом разработчиков-балбесов в то, что функция может вызывать исключения. А разработчики-балбесы это не ценят и обламывают весь феншуй.
Короче, крато.
1) То, что действительно было важно в устройстве сервера, ты замазал ...Каким-то образом ты взаимодействуешь с сокетом ss. Так вот, функция чтения, в случае ошибки вызывает исключение, какое конкретно, зависит от функции. За ...не видно. Если это BufferedReader, то это будет IOException, если какой-нибудь Scanner, то, соответственно NoSuchElementException и т. д. , в JavaDoc все более или менее подробно описано.
Т. е. у тебя примерно так должно быть
BufferedReader breader = new BufferedReader(new InputStreamReader(ss.getInputStream());
try {
System.out.println(breader.readLine());
} catch (IOException e) {
System.err.println("Тут-то, при незапланированном обрыве, и должно вылететь!
");
e.printStackTrace();
return;
}
2) Почитай про механизм исключений. Там не много и не сложно. Уж если ты это не осилишь, то дальше VBA тебе соваться не стоит.
Непростой Гусь
Мастер
(1450)
А вот теперь утро кончилось и настроение мое стремительно падает...
Как происходит работа с сокетами?
В кратце - а) Устанавливается соединение; б) Для синхронных сокетов (сомневаюсь, что ты будешь на Джаве мудохатья с асинхронными, если такое вообще возможно) делается попытка чтения. В случает наличия данных, программа их получает, если данных нет, поток останавливается и ждет их поступления. То же самое с синхронной записью.
В общем, в основном это выглядит так
while (пока соединение открыто) {
ss.read(buffer);
обрабатываем буфер;
}
ss.read - может называться как угодно, readLine, nextInt и т.п. (еще раз повторяю, когда возникают какие-либо проблемы - выкладывай полные исходники с проблемой, а не с чертовыми "..." ), это не существенно. В Джаве они всев случае каких-либо ошибок генерируют исключение. В исключении и будет содержаться информация о произошедшей проблеме. Все. Добавить сюда больше нечего.
т.е. кусок кода будет выглядить так

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: JAVA - Server - Socket как обнаружить разрыв соединения.. Метод какой-нить есть?
Java Secure Socket Extension на Википедии
Посмотрите статью на википедии про Java Secure Socket Extension
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*