![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
SendText в блокирующем сокете [D7, WinXP]
Alex_C © (2009-04-03 09:40:00)Вопрос в продолжении моей темы
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1237876024&n=4
С работой блокирующего сокета в треде разобрался.
Теперь есть такой вопрос: как правильно организовать передачу запроса серверу от клиента? Когда сокет был не блокирующий все было просто:
if TelnetSocket.Active then
TelnetSocket.Socket.SendText(S);
Однако сейчас сам TelnetSocket у меня объевлен внутри треда. Как правильно поступить?
Polevi (2009-04-06 11:13:00) [1]SendText это функция
Сергей М. (2009-04-03 11:31:00) [2]Нет, не верно.
StrToSend у тебя - потоконебезопасный ресурс.
Как минимум следует синхронизировать мультипоточный доступ к нему.
Alex_C (2009-04-03 09:59:00) [3]Верно ли такое решение:
Execute:
while (not Terminated) and TelnetSocket.Socket.Connected do
begin
if StrToSend <> '' then
begin
TelnetSocket.Socket.SendText(StrToSend);
StrToSend := '';
end;
DataLength := TelnetSocket.Socket.ReceiveBuf(Buf[0], 64000);
if DataLength <= 0 then
Break;
try
ReadDataFromTelnet(Buf, DataLength);
except
end;
end;
procedure TTelnetThread.SendText(S: string);
begin
StrToSend := S;
end;