2013-10-26 5 views
3


Я написал программу Client-Server, используя java Sockets, и она работает нормально. Теперь я пытаюсь перейти к HTTPS для связи между клиентом и сервером.
Мой код основан на встроенных сокетах Java (Socket и ServerSocket), и он работает отлично. Но когда я использую гнезда HTTPS (SSLSocket и SSLServerSocket) без изменения остальной части кода, к сожалению, больше не будет работать.

Программе требуется постоянная связь между сервером и клиентом, чтобы они могли отправлять и получать данные в течение нескольких минут. Проблема заключается в том, что соединение HTTPS было закрыто на стороне сервера или клиента после завершения первой транзакции.

Чтобы быть более точным, это то, что происходит:
1. Сервер создает SSLServerSocket и вызывает на нем «accept()».
2. Клиент создает SSLSocket и подключается к серверу. Затем записывается на сервер через «DataOutputStream»
3. Сервер читает клиент через «DataInputStream» и отправляет обратно свой ответ через «DataOutputStream».
4. Клиент считывает сервер через «DataInputStream».
Все в порядке до сих пор! Но после этого, когда клиент отправляет другой поток, на стороне сервера никакие данные не будут «доступны()» на сервере по тому же методу, который использовался ранее.

Есть ли способ сохранить это соединение в живых?

Tnx для ура помогает заранее!Java SSLSocket не останется в живых (требуется HTTPS Постоянное соединение)

+0

Не могли бы вы добавить код? на данный момент неясно, что подразумевается под «отправкой потока», – Jk1

ответ

1

InputStream.available() не является надежным способом обнаружения входа сокета. Поэтому у вас нет доказательств того, что соединение не живое. Просто заблокируйте метод чтения. Это подразумевает выделенный поток для чтения для каждого клиента.

 Смежные вопросы

  • Нет связанных вопросов^_^