Вниз
Скачать: 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.027 c
1-1079130133
graf
2004-03-13 01:22
2004.04.04
RxRichEdit


14-1078752373
он
2004-03-08 16:26
2004.04.04
выборы


3-1078463921
avkar
2004-03-05 08:18
2004.04.04
cxDBEdit


4-1074689155
Petrovich
2004-01-21 15:45
2004.04.04
Как запустить программу (Отказано в доступе)


6-1074765464
KalmykovSergei
2004-01-22 12:57
2004.04.04
Запуск DialUp через API




   Наверх