#java #performance #sockets #client-server
#java #Производительность #сокеты #клиент-сервер
Вопрос:
Я работаю над клиент-серверной программой Java. Я использую сокет для установления соединения, но я не уверен в эффективности. Итак, это мой вопрос: каждый раз, когда мне нужно соединение с сервером, эффективнее ли создавать новый сокет или использовать тот, который был создан для предыдущего соединения?
Я думаю, мне нужен метод для проверки, подключен ли клиент уже.
Комментарии:
1. На мой взгляд, это в значительной степени зависит от повторного использования соединения.. может быть, есть ограничение по времени для определения повторного использования против нового?
2. серверные операции всегда одинаковы, иногда для обработки результата требуется больше времени, но только это. Итак, клиент отправляет входную информацию, а сервер возвращает клиенту выходной результат. После этого клиентский пользователь должен решить, повторить ли ту же операцию или закрыть программу.
Ответ №1:
С точки зрения производительности более эффективно повторное использование ранее созданного сокета. Но это не обязательно должно быть лучшим решением, это зависит от каждого конкретного случая.
Случай идиомы имеет a ServerSocket
на стороне сервера, который возвращает a Socket
каждый раз, когда к нему подключается новый клиент. Если вам требуется, чтобы несколько клиентов работали с сервером, вы можете создать a Thread
для обработки каждого клиента, передающего ему возвращенный Socket
.
Более того, вам не нужен метод для проверки того, что у вас уже подключен клиент, ServerSocket
который возвращает новый Socket
каждый раз, когда это происходит.
Пожалуйста, подробнее об этой теме читайте в руководствах Oracle.
Комментарии:
1. я уже использую Thread на сервере, но мне нужен метод для проверки сокета на клиенте на случай, если я решу поддерживать открытое соединение. Возможно, я был неточен в своем описании, извините.
2. если вы не получаете никаких исключений, ваш сокет открыт. вот и все.