2010-03-24 95 views
1

我需要從ServerSocket獲取連接ID。客戶端發送文本,我需要知道哪些客戶端發送文本。有任何想法嗎??從ServerSocket獲取連接ID

+3

請詳細說明。目前還不清楚你在找什麼。套接字沒有ID。除了連接的IP /端口對之外,您必須手動跟蹤任何其他識別信息。 – 2010-03-27 01:19:46

回答

0

我在想,他是指插座的手柄

procedure TForm1.srvrsckt1ClientConnect(Sender: TObject; 
    Socket: TCustomWinSocket); 
    var connectedClientSockHandle : Integer; 
begin 
    connectedClientSockHandle := socket.Handle; 
end; 
0

我認爲你應該做的是讓每個新的連接(在onaccept功能)分配一個唯一的ID(隨機字母/數字),那麼從客戶端 - >服務器發送的每個命令將包含該客戶端的唯一ID。

1
procedure Tf_serveur.ServerSocket1ClientRead(Sender: TObject; 
    Socket: TCustomWinSocket); 
begin 
    Memo1.Lines.Add(Socket.RemoteAddress+'\>'+Socket.ReceiveText);`` 
    // Socket.RemoteAddress is the client ip 
    // Socket.RemoteHost  is the client nameposte 
    // Socket.receivetext is the client text sinding 
end; 
+1

感謝您的貢獻,但是您能否爲您的答案添加一些解釋? – honk 2014-11-19 20:24:16

+1

什麼是不清楚的呢?有ServerSocket事件,它們告訴你每次哪個客戶端套接字觸發事件,並且這些套接字可以告訴你本地和遠程IP:端口對的連接。此代碼記錄遠程(客戶端)IP並將文本發送到「TMemo」組件。如果你想要一些更有意義的東西,比如用戶名,那麼你必須自己實現,比如讓客戶端在連接時發送它的用戶名,並且存儲在需要的地方,比如在'TCustomWinSocket中。數據屬性。 – 2014-11-19 21:25:17