Мне нужно получить идентификатор соединения от ServerSocket. По клиенту я отправляю текст, и мне нужно знать, какой клиент отправил текст. Есть идеи??Получить идентификатор соединения от ServerSocket
ответ
Я имею в виду, что он имеет в виду ручки гнезда
procedure TForm1.srvrsckt1ClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
var connectedClientSockHandle : Integer;
begin
connectedClientSockHandle := socket.Handle;
end;
Я думаю, что вы должны сделать, это иметь каждое новое соединение (в функции onaccept
) присваивается уникальный идентификатор (случайные буквы/номера), то каждая команда, отправленная с client-> server, будет содержать уникальный идентификатор этого клиента.
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;
Спасибо за ваш вклад, но не могли бы вы добавить какое-то объяснение в свой ответ? – honk
Что неясно? Есть события ServerSocket, они сообщают вам, какой клиентский сокет каждый раз вызывал событие, и эти сокеты могут сообщать вам локальные и удаленные IP-пары портов для их соединений. Этот код регистрирует удаленный (клиентский) IP-адрес и отправляет текст в компонент «TMemo». Если вы хотите что-то более значимое, например, имя пользователя, то вы должны реализовать это самостоятельно, например, когда клиент отправляет свое имя пользователя при подключении, и вы храните его где-нибудь, когда это необходимо, например, в 'TCustomWinSocket. Свойство данных. –
Просьба уточнить. Непонятно, что именно вы ищете. У сокетов нет идентификаторов. Помимо подключенных пар IP/Port, вы должны отслеживать любую другую идентифицирующую информацию вручную. –