![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Обработка событий от нескольких сокетов. [D7, XP]
Новичек © (2007-11-15 12:11:00)Здравствуйте, уважаемые Знатоки.
Имеется несколько потоков, в каждом из которых создается сокет.
Обработка событий от сокетов осуществляется с помощью вызоваWSAAsyncSelect(sctSocket, frmMain.Handle, WM_sctSocketEvent, FD_Read);
Обработчик выглядит следующим образом:
procedure TfrmMain.WMsctSocketEvent(var Msg: TMessage);
var
LenOfBuf: Cardinal;
Local: AnsiString;
begin
case WSAGetSelectEvent(Msg.lParam) of
FD_Read:
begin
ioctlsocket(WorkedSocket, FIONREAD, LenOfBuf);
SetLength(Local, LenOfBuf);
Recv(sctSocket, PChar(Local)^, LenOfBuf, 0);
if Pos(IniString1, Local) <> 0 then
begin
SendStr(sctSocket, Answer1 + #13#10);
Exit;
end;
if Pos(IniString2, Local) <> 0 then
begin
SendStr(sctSocket, Answer2 + #13#10);
Exit;
end;
end;// FD_Read
end;// case
end;
Процедура SendStr отсылает указанную строку на указанный сокет.
Теперь сам вопрос: если в этот обработчик будут поступать данные из множества сокетов, то на какой сокет будет отправлять данные процедура SendStr?
Спасибо.
Сергей М. (2007-11-15 12:29:00) [21]
> Recv(sctSocket, PChar(Local)^, LenOfBuf, 0);
Кто такой sctSocket ?
Vice____ (2007-11-15 12:27:00) [22]а самому проверить...
хотя думаю ето только первый вопрос)