![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите Мазуту!
Мазут Береговой © (2002-11-01 07:16:00)Здрасте.
Кто знает, почему не принимаются данные и не срабатывает событие?
Ход мыслей такой:
type TSocketNotifyEvent = procedure (Sender: TObject; Socket: TCustomWinSocket) of object;
type
TDNS = class(TComponent)
...........................
procedure TDNS.SendQuery;
var Buff : TABuffer;
Len : integer;
Socket : TCustomWinSocket;
begin
...................................
Sk:= TClientSocket.Create(Self);
Sk.Host := ....;
Sk.Port :=....;
Sk.ClientType := ctBlocking;
try
If not Sk.Active then Sk.Active := true;
While not Sk.Active do Application.ProcessMessages;
Sk.Socket.SendBuf(DNSBuffer,Len);
До этого места все отрабатывает.
А ниже все отказывает.
If Assigned(OnReadBuf)
then OnReadBuf(Self,Socket);
Len:=Sk.Socket.ReceiveLength;
Sk.Socket.ReceiveBuf(Buff,Len);
.......................
finally
Sk.Destroy;
end;
end;
ПОмогите, пожалуйста!
Мазут Береговой (2002-11-01 10:17:00) [21]И еще, если бы соединение не устанавливалось на Sr.Active, то вся эта штука зацикливалась бы на while в ожидании соединения...
Если есть есть еще средства проверить результат SendBuf, то подскажи.
Мазут Береговой (2002-11-01 10:04:00) [22]До этого написал код как прогу. И эти два события обрабатывались на отдельных процедурах TButtonClick и OnDataReceived. А кроме того я иду в отладчике по шагам и дохожу до SendBuffer и внизу на таскбаре вижу что взаимодействуют мой client и DNS сервер. Да и ошибок до этого не вылетает, а вот после того как пытаюсь сделать ReceiveBuffer отладчик дает ошибку Remote host forcibly closed connection. Вот такая уверенность...
Digitman (2002-11-01 08:50:00) [23]
> Sk.Socket.SendBuf(DNSBuffer,Len);
>
> До этого места все отрабатывает.
С чего это такая уверенность ?
Где анализ результата SendBuf() ?