2010-03-24 2 views
1

Мне нужно получить идентификатор соединения от ServerSocket. По клиенту я отправляю текст, и мне нужно знать, какой клиент отправил текст. Есть идеи??Получить идентификатор соединения от ServerSocket

+3

Просьба уточнить. Непонятно, что именно вы ищете. У сокетов нет идентификаторов. Помимо подключенных пар IP/Port, вы должны отслеживать любую другую идентифицирующую информацию вручную. –

ответ

0

Я имею в виду, что он имеет в виду ручки гнезда

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

Я думаю, что вы должны сделать, это иметь каждое новое соединение (в функции onaccept) присваивается уникальный идентификатор (случайные буквы/номера), то каждая команда, отправленная с client-> server, будет содержать уникальный идентификатор этого клиента.

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

+1

Что неясно? Есть события ServerSocket, они сообщают вам, какой клиентский сокет каждый раз вызывал событие, и эти сокеты могут сообщать вам локальные и удаленные IP-пары портов для их соединений. Этот код регистрирует удаленный (клиентский) IP-адрес и отправляет текст в компонент «TMemo». Если вы хотите что-то более значимое, например, имя пользователя, то вы должны реализовать это самостоятельно, например, когда клиент отправляет свое имя пользователя при подключении, и вы храните его где-нибудь, когда это необходимо, например, в 'TCustomWinSocket. Свойство данных. –