在我的實驗,在Java套接字中,必須要求服務器和客戶端聲明OutputStream&InputStream的相反順序嗎?
如果服務器有這樣的:
的ObjectInputStream ObjectInputStream的=新的ObjectInputStream(socket.getInputStream()); ObjectOutputStream objectOutputStream = new ObjectOutputStream(socket.getOutputStream());
然後客戶端必須採取:
的ObjectOutputStream的ObjectOutputStream =新的ObjectOutputStream(socket.getOutputStream()); ObjectInputStream objectInputStream = new ObjectInputStream(socket.getInputStream());
否則,服務器和客戶端都會掛起。
這是什麼原因?有沒有一個正式的API規範,我還沒有找到它?
我會想在試圖寫入任何東西之前嘗試從「InputStream」讀取會導致問題(因爲讀取會阻塞),這意味着如果客戶端和服務器都嘗試從相應的'InputStreams'中讀取相同的你希望使用寫入的線程,那麼你會遇到問題... – MadProgrammer
@MadProgrammer它*確實會導致一個問題。這就是他問的原因。但僅限於對象流,因爲構造分別寫入和讀取標題。 – EJP
@EJP - 錯過了「流」中的「對象」:P - 一些更多的caffine的時間 – MadProgrammer