Вниз
Скачать: CL | DM;

Динамическое создание компонента   Найти похожие ветки 

 
Vilux ©   (2004-03-13 14:35) [0]

Есть следующий код, создаем наследника TClientSocket и назначаем свое событие OnConnect. При запуске этот сокет соединяется с другим адресом по порту 333, но при этом процедура TSock.SNPPConnect не вызывается. В чем ошибка?

program test;

uses
 ScktComp;
type
TSock=class(TClientSocket)
public
  procedure SNPPConnect(Sender: TObject; Socket: TCustomWinSocket);
end;

{$R *.res}

procedure TSock.SNPPConnect(Sender: TObject; Socket: TCustomWinSocket);
var i:integer;
begin
socket.Close;
i:=10;
end;

var snpp:TSock;
begin
snpp:=TSock.Create(nil);
snpp.OnError:=snpp.SNPPError;
snpp.OnConnect:=snpp.SNPPConnect;
snpp.Address:="192.168.0.1";
snpp.Port:=333;
snpp.ClientType:=ctNonBlocking;
snpp.Open;
end.


 
Digitman ©   (2004-03-13 15:46) [1]


> При запуске этот сокет соединяется


значит, не соединяется

при успешном установлении соединения будет вызван обработчик OnConnect, при неуспешной попытке установления соединения - обработчик OnError... третьего не дано


 
Vilux ©   (2004-03-13 16:26) [2]

Я написал параллельно прогу с TServerClient и сделал, чтобы она выдавала, когда происходит коннект с клиентом. Так вот коннект происходит, но событие не вызывается :(


 
Digitman ©   (2004-03-13 16:32) [3]


> событие не вызывается


как ты определил ? ты брейкпойнт ставил в тело обработчика или каким образом ?

procedure TSock.SNPPConnect(Sender: TObject; Socket: TCustomWinSocket);
var i:integer;
begin
socket.Close; <-- здесь ставишь брейкпойнт ?
i:=10;
end;


 
Vilux ©   (2004-03-13 17:31) [4]

Да, именно там ставлю брейкпоинт, и еще добавил туда showmessage, но ни бреэйкпоинт не срабатывает, ни мессага не выскакивает.Сервер пишет, что соединение с клиентом произошло и не разорвано, а оно должно тут же разорваться.


 
Vilux ©   (2004-03-13 17:55) [5]

Выявил следующий факт, если соединени сделать блокирующим, то все работает как надо... теперь вопрос, как сделать, чтобы оно работали и при неблокирущем соединении? Написал нижеприведеный код, но до строчки с ShowMessage("Connected") так и не доходит... хотя сервер пишет, что коннект произошел

var snpp:TSock;
begin
snpp:=TSock.Create(nil);
snpp.Address:="192.168.0.1";
snpp.Port:=333;
snpp.ClientType:=ctNonBlocking;
snpp.OnConnect:=snpp.SNPPConnect;
snpp.Open;
repeat
until snpp.Socket.Connected;
showmessage("Connected...");
end.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.023 c
1-1079076462
Dysan
2004-03-12 10:27
2004.04.04
как ловить ошибки в COM-е


1-1079251428
Sphinx
2004-03-14 11:03
2004.04.04
Свернуть-Развернуть= -2МБ


6-1075135863
kor@l
2004-01-26 19:51
2004.04.04
HTTP


1-1079369260
Eagle Owl
2004-03-15 19:47
2004.04.04
Ресурсы в DLL


1-1079432613
MIKL_b
2004-03-16 13:23
2004.04.04
Потоки не пашут паролельно! По очереди они...




   Наверх