Меню сайта
Курсы Java
Мини-чат
поиск
новое на форуме
Tags
Главная » 2012 Март 5 » Идеи по реализации JAVA Socket
16:34:29 Идеи по реализации JAVA Socket | |
![]() Что нам нужно: Создаём сокет на сервере, слушающий на 8888 порту. Code ServerSocket server = new ServerSocket(8888); Socket socket = server.accept(); System.out.println("Server accepted connection"); Thread.sleep(60000); socket.close(); server.close(); Создаем на клиенте сокет подключающийся к 8888 порту сервера. Code Socket client = new Socket("localhost", 8888); OutputStream os = client.getOutputStream(); os.write(new byte[256]); System.out.println("Client succesfully wrote message"); os.close(); client.close(); System.out.println("Client succesfully closed connections"); Таким образом на клиенте мы вызываем синхронный метод записи в сокет, успешно закрываем соединение и идем работать дальше, будучи уверенными, что наше сообщение доставлено. Сервер, кстати, в примере выше, тоже не получит никакой ошибки, так и не считав отправленное ему сообщение. Т.е. как мы видим никакой гарантии, что сервер зачитал наше сообщение, а тем более корректно его обработал нет. Чтобы таких проблем не возникало, необходимо работать по схеме request-response. Т.е. после оправки сообщения клиентом, надо дождаться некоторого ответа от сервера, который должен быть послан программно. Кроме решения задач с многопочностью, восстановлением соединения, потерянными пакетами, переполнении буферов, очереди сообщений, все эти ошибки нужно как-то обработать! Есть альтернативное решение - не использовать сокеты вообще ! Использовать запись/чтение в базу данных MySQL, при этом мы решим сразу массу проблем: - рост производительность при эквивалентных затратах на разработку - вся история будет храниться в базе данных - масштабируемость проекта Но если вам все таки удобно пользоваться механизмами сокетов, стоит обратить внимание на готовые решения и не использовать велосипед: Apache Qpid, StormMQ, ZeroMQ. | |
Просмотров: 1317 | Добавил: CHerry |
Всего комментариев: 2 | |
| |