2011-12-09 30 views
4

有人可以讓我知道如何通過多線程中的一個連接發送和接收數據。德爾福:通過一個套接字多線程發送數據

該模型是這樣的:

Model

我所知道的是,如果所有的三個客戶端都在同一時間發送數據,「客戶端X」將獲得合併的所有接收到的數據,並「客戶端X」無法分離該數據以識別哪個部分來自哪個客戶端。

Delphi 2010,Indy,Win7。

對不起,如果我的英語不好,我希望你明白這個主意。

回答

6

您需要實現鎖定機制,例如臨界區或互斥鎖,以防止多個線程完全同時寫入套接字。

當接收到發往多個線程的數據時,您只需要在一個線程中進行讀取操作,並根據需要將數據傳遞給其他線程。

無論採用哪種方式,您都需要構建數據,以便接收方知道一條消息的結束位置和下一條消息的開始位置。可以在發送消息內容之前發送消息的長度,也可以在消息之間發送一個永不會出現在消息本身中的唯一分隔符。

+0

對,就像我想的那樣 – waza123