Вниз
Скачать: 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.037 c
1-1079180964
Oyster
2004-03-13 15:29
2004.04.04
Как забить весь экран?


9-1063169423
Orc
2003-09-10 08:50
2004.04.04
Визуальный процесс загрузки


1-1079292179
К.К.С.
2004-03-14 22:22
2004.04.04
Два вопроса: интересный и нет...


14-1078910092
Drunya
2004-03-10 12:14
2004.04.04
Как послать мыло с файлом на WinAPi


14-1078947076
***ghost***
2004-03-10 22:31
2004.04.04
Новый комп... Помогите выбрать!




   Наверх