Конференция "Сети" » Обновление событий... [D5, D7]
 
  • maxistent (05.01.08 18:18) [0]
    Всем привет. Помогите в одном вопросе. Я пытаюсь создать ДЛЛ, в ней использую компонент TServerSocket. При коннекте/дисконнекте, а также при появлении данных со стороны клиента должны появляццо соотв. сообщения. Я делаю примерно следующее:



    ...

    type
    TServer_IN = class (TServerSocket)
    Procedure OnConnect(Sender: TObject; Socket: TCustomWinSocket);
    Procedure OnDisconnect(Sender: TObject; Socket: TCustomWinSocket);
    Procedure OnError(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer);
    Procedure OnRead(Sender: TObject; Socket: TCustomWinSocket);
    end;

    ...
    описываю обработчики событий OnConnect,OnDisconnect,OnError,Onread...
    ...

    var
    MS_IN:TServer_IN;
    Server_IN:TServerSocket;

    ...

    begin
    MS_IN:=TServer_IN.Create(nil);
    Server_IN:=TServerSocket.Create(nil);
    Server_IN.Port:=1234;
    Server_IN.OnClientError:=MS_IN.OnError;
    Server_IN.OnClientConnect:=MS_IN.OnConnect;
    Server_IN.OnClientDisconnect:=MS_IN.OnDisconnect;
    Server_IN.OnClientRead:=ms_in.OnRead;
    Server_IN.Active:=true;
    >>>>>>>while ??? do ???<<<<<<<<
    end.



    В общем, в после всего этого безобразия нужно организовать цикл, который "ОБНОВЛЯЕТ" Server_IN, чтобы он "реагировал" на коннект/дисконнект и поступление данных со стороны клиента. Как это сделать корректно?
  • MultIfleX (05.01.08 18:28) [1]
    var
     msg      : TMsg;
    begin
    while GetMessage(msg, 0, 0, 0) do
     begin
       TranslateMessage(msg);
       DispatchMessage(msg);
     end;
  • maxistent (05.01.08 19:56) [2]
    так не получается. приложение, которое начинает использовать эту ДЛЛ-ку, виснет. полностью. апсалютна. :-( как быть?
  • MetalFan © (06.01.08 10:41) [3]
    1. неблокирующий режим
    2. отдельный поток
  • maxistent (06.01.08 16:58) [4]
    ок. а где можно примеры найти?
  • maxistent (06.01.08 17:00) [5]
    а... ну да. я итак использую неблокирующий режим. и отдельный поток пробывал поставить. всё-равно виснет :-( как быть? может есть какая-то процедура, позволяющая выполнить непосредственное "ОБНОВЛЕНИЕ" ServerSocket'a?
 
Конференция "Сети" » Обновление событий... [D5, D7]
Есть новые Нет новых   [134431   +15][b:0][p:0.001]