簡體   English   中英

我可以使用兩個不同的線程在同一個套接字上讀寫嗎?

[英]Can I read and write on the same socket using two different threads?

我正在為一項任務寫一個小東西,我必須管理主機之間的TCP連接。 我的目標本來是兩個TCP連接,一個來電,一個外出,和一個非常復雜的協議來管理這些連接的創建和銷毀。

那么,這是一個更簡單的替代方案,我希望有效。 一個插座,易於連接,易於破壞。 一個線程將數據寫入該套接字上的流,一個線程從同一個套接字上的流中讀取。 我沒有阻塞的問題,所以我不需要使用nio。

我可以做到這一點嗎?

TCP套接字是一個全雙工流,您可以從多個線程讀取和寫入它。 這樣做是一個好主意是一個完全不同的問題。

如果你只有一個編寫器線程和一個讀者線程,它可能會產生更清晰和更簡單的代碼。

希望通過該套接字進行通信的其他線程會通過某個隊列將請求傳遞給寫入程序線程。 類似地,讀者將通過隊列將傳入消息分派到適當的線程。

該技術通常用於用戶界面。

據我所知,套接字是線程安全的。 從一個線程調用socket上的close()時,你應該小心。 第二個可以掛起一些阻塞功能或無限選擇。

是的,你可以這樣做。 您可以讓1個線程使用ServerSocket啟動服務器,使用Socket連接到此服務器的另一個線程。 您可以通過谷歌搜索EchoServer / EchoClient的大量示例來開始使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM