2013-10-26 120 views
3


我已經使用java套接字編寫了一個客戶端 - 服務器程序,它工作得很好。現在我正在嘗試轉移到HTTPS以在客戶端和服務器之間進行通信。
我的代碼基於java內置套接字(Socket和ServerSocket),它工作得很好。但是,當我使用HTTPS套接字(SSLSocketSSLServerSocket而不更改代碼的其餘部分時,不幸的是不再工作。

該程序需要服務器和客戶端之間的持久連接,以便讓他們在幾分鐘內發送和接收數據。問題似乎是HTTPS連接在第一個事務完成後已在服務器或客戶端關閉。

更確切地說,這是發生了什麼:
1.服務器創建一個SSLServerSocket並在其上調用「accept()」。
2.客戶端創建一個SSLSocket並連接到服務器。然後通過「DataOutputStream」寫入服務器
3.服務器通過「DataInputStream」讀取客戶端,並通過「DataOutputStream」發回其響應。
4.客戶端通過「DataInputStream」讀取服務器。
一切都很好,直到現在!但在此之後,當客戶端發送另一個流時,在服務器端沒有數據將通過之前使用的相同方法在服務器上「可用()」。

有沒有辦法讓這個連接保持活着?

Tnx for ur幫助提前!Java SSLSocket不會保持活動狀態(需要使用HTTPS持久連接)

+0

請問您可以添加一些代碼嗎?目前還不清楚「發送流」是什麼意思, – Jk1

回答

1

InputStream.available()不是檢測套接字輸入的可靠方法。因此,您沒有證據表明連接不存在。只需在讀取方法中阻止。這意味着每個客戶端都有一個專門的讀取線程。

相關問題