我正在製作一個應用程序,其工作方式與實時聊天非常相似。用戶會不斷寫作,讓我們說一個文本區域,並將消息發送給其他用戶。在通信班上,我設立了一個接收器。當某人的消息到達客戶端時,將調用receive方法並獲取消息。我不明白的是代碼將如何執行。如果在用戶輸入/發送消息時調用接收消息,會發生什麼?我需要做什麼才能使其正常工作? 希望這個問題很清楚。處理Java Interupts
ps:我仍然處於設計階段,這就是爲什麼我沒有測試它看看會發生什麼。 atm我只使用第二個線程來接收調用接收方法的消息。
我正在製作一個應用程序,其工作方式與實時聊天非常相似。用戶會不斷寫作,讓我們說一個文本區域,並將消息發送給其他用戶。在通信班上,我設立了一個接收器。當某人的消息到達客戶端時,將調用receive方法並獲取消息。我不明白的是代碼將如何執行。如果在用戶輸入/發送消息時調用接收消息,會發生什麼?我需要做什麼才能使其正常工作? 希望這個問題很清楚。處理Java Interupts
ps:我仍然處於設計階段,這就是爲什麼我沒有測試它看看會發生什麼。 atm我只使用第二個線程來接收調用接收方法的消息。
應該沒有問題。
當某人的消息到達客戶端時,將會調用接收方法 並將獲得該消息。我不明白的是 代碼將如何執行?
您應該有一個Receiver類來封裝套接字(從中接收數據)並保留一組偵聽器(請參閱Observer pattern)。 GUI可以是聽衆之一。當通過套接字接收到消息時,您需要通過轉發收到的數據來通知所有聽衆。這樣,你就有了一個乾淨而好的方式來通知GUI關於新消息的到達。
如果在用戶輸入/發送消息時調用接收消息 會發生什麼?
這取決於你使用的IP協議的類型,但一般你不必擔心這個,雖然我建議你使用lock機制保護您的插座。
我需要做些什麼才能使其正常工作? 這裏是一個很好的example,可以給你一些啓發:)
編輯:至於你的問題關於執行流程,發送和接收都可以在同一時間發生兩個不同且不相關的操作。這可以通過在兩個不同的線程中實現發送和接收操作來實現。這是一個article套接字通信和多線程。
您應該執行傳統Java EE應用程序服務器所做的操作,即爲每個傳入消息分配一個單獨的線程,或嘗試沿着Netty的線路嘗試Java NIO解決方案。
傳入消息將被簡單地讀取併發送到正確的面板以顯示它們。將顯示傳入消息的同一個面板將接收要發送消息的輸入。此操作需要兩個線程? – Giannis
你能描述一下「用戶在輸入/發送信息時」的含義嗎?這是一個控制檯模式程序嗎?如果它是一個GUI程序,那麼你將使用某種事件驅動的框架,所以沒有「while」。您只需獲取用戶按鍵事件,然後決定如何處理每個事件。 –