Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.04;
Скачать: 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 вся ветка

Текущий архив: 2004.04.04;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.049 c
3-1078232067
Rule
2004-03-02 15:54
2004.04.04
Как сделать автоинкремент а TClientDataset ?


7-1074190873
RAV
2004-01-15 21:21
2004.04.04
Как скрыть процесс в win2003 ?


3-1078393275
Турчин
2004-03-04 12:41
2004.04.04
Btrieve и Pervasive


9-1063796535
z1r[0]
2003-09-17 15:02
2004.04.04
из 3d-max в .x


3-1078204450
-EVGENEY-
2004-03-02 08:14
2004.04.04
SQL -> DLL