Indy UDP服務器組件似乎依賴於Windows消息,因爲我看到只有當鼠標光標移動到包含服務器組件的窗體上時纔會顯示新消息。如何在控制檯應用程序中使用TIdUDPServer?
private
{ Private declarations }
Srv: TIdUDPServer;
...
procedure TForm1.FormCreate(Sender: TObject);
begin
Srv := TIdUDPServer.Create(Self);
Srv.DefaultPort := 9009;
Srv.OnUDPRead := Self.udpServerUDPRead;
Srv.Active := True;
end;
我寧願一個控制檯或服務應用:
我使用此代碼創建的組件在運行時。我需要一個(不可見的)窗口句柄+一些Windows消息隊列代碼來獲得這個組件的工作嗎?
更新:一些(非官方)documentation說:當活動創建一個監聽線程監聽 入站UDP數據包
TIdUDPServer。 ...當ThreadedEvent爲false時,OnUDPRead 事件將在主程序線程的上下文中觸發。當 ThreadedEvent爲true時,會在偵聽器線程的 上下文中觸發OnUDPRead事件。
這可能是有用的:http://stackoverflow.com/questions/4359635/udp-server-and-client-in-delphi –
它不依賴於Windows消息。 –