Hallo,
ich möchte mit dem BDS2009 einen einfachen Konsolen-UDP Server
bauen. Mein Versuch scheitert an der
Event handler - OnReadEvent zuweisung.
IdUDPServer1->OnUDPRead = (TUDPReadEvent)IdUDPServer1UDPRead;
oder
IdUDPServer1->OnUDPRead = &IdUDPServer1UDPRead;
oder
IdUDPServer1->OnUDPRead = IdUDPServer1UDPRead;
wie muss das aussehen?
In meinem Beispiel funktioniert das IdUDPClient1->Send problemlos.
Auch wenn ich die Anwendung auf einer Form erstelle "OnUDPRead"-Event
über den ObjektInspektor zuweise funktioniert alles auch gut. Aber...ich muss
ohne TForms auskommen.
HILFE!
#ifndef __MYDLL_H
#define __MYDLL_H
#include "IdUDPServer.hpp"
#include "IdUDPClient.hpp"
TIdUDPClient *IdUDPClient1;
TIdUDPServer *IdUDPServer1;
#endif
------------------------------------------------------------------
#include <vcl.h>
#include <iostream>
#pragma hdrstop
#include <tchar.h>
#include "main.h"
using namespace std;
#pragma argsused
void __fastcall IdUDPServer1UDPRead(TIdUDPListenerThread *AThread, TBytes AData,
TIdSocketHandle *ABinding)
{
cout << StringOf(AData).c_str() << endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
try {
IdUDPClient1 = new TIdUDPClient(NULL);
IdUDPClient1->Host = "192.168.2.57";
IdUDPClient1->Port = 2001;
IdUDPClient1->Active=true;
try {
IdUDPClient1->Connect();
} catch (EIdException &error) {
cout << error.Message.c_str() << endl;
}
IdUDPClient1->Send("Hallo");
IdUDPServer1 = new TIdUDPServer(NULL);
IdUDPServer1->BroadcastEnabled=false;
IdUDPServer1->BufferSize=8192;
IdUDPServer1->DefaultPort = 2001;
IdUDPServer1->IPVersion=Id_IPv4;
IdUDPServer1->ThreadedEvent=false;
IdUDPServer1->Active=true;
IdUDPServer1->OnUDPRead = (TUDPReadEvent)IdUDPServer1UDPRead;
} catch (EIdException &error) {
cout << error.Message.c_str() << endl;
}
return 0;
}
//---------------------------------------------------------------------------
ich möchte mit dem BDS2009 einen einfachen Konsolen-UDP Server
bauen. Mein Versuch scheitert an der
Event handler - OnReadEvent zuweisung.
IdUDPServer1->OnUDPRead = (TUDPReadEvent)IdUDPServer1UDPRead;
oder
IdUDPServer1->OnUDPRead = &IdUDPServer1UDPRead;
oder
IdUDPServer1->OnUDPRead = IdUDPServer1UDPRead;
wie muss das aussehen?
In meinem Beispiel funktioniert das IdUDPClient1->Send problemlos.
Auch wenn ich die Anwendung auf einer Form erstelle "OnUDPRead"-Event
über den ObjektInspektor zuweise funktioniert alles auch gut. Aber...ich muss
ohne TForms auskommen.
HILFE!
#ifndef __MYDLL_H
#define __MYDLL_H
#include "IdUDPServer.hpp"
#include "IdUDPClient.hpp"
TIdUDPClient *IdUDPClient1;
TIdUDPServer *IdUDPServer1;
#endif
------------------------------------------------------------------
#include <vcl.h>
#include <iostream>
#pragma hdrstop
#include <tchar.h>
#include "main.h"
using namespace std;
#pragma argsused
void __fastcall IdUDPServer1UDPRead(TIdUDPListenerThread *AThread, TBytes AData,
TIdSocketHandle *ABinding)
{
cout << StringOf(AData).c_str() << endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
try {
IdUDPClient1 = new TIdUDPClient(NULL);
IdUDPClient1->Host = "192.168.2.57";
IdUDPClient1->Port = 2001;
IdUDPClient1->Active=true;
try {
IdUDPClient1->Connect();
} catch (EIdException &error) {
cout << error.Message.c_str() << endl;
}
IdUDPClient1->Send("Hallo");
IdUDPServer1 = new TIdUDPServer(NULL);
IdUDPServer1->BroadcastEnabled=false;
IdUDPServer1->BufferSize=8192;
IdUDPServer1->DefaultPort = 2001;
IdUDPServer1->IPVersion=Id_IPv4;
IdUDPServer1->ThreadedEvent=false;
IdUDPServer1->Active=true;
IdUDPServer1->OnUDPRead = (TUDPReadEvent)IdUDPServer1UDPRead;
} catch (EIdException &error) {
cout << error.Message.c_str() << endl;
}
return 0;
}
//---------------------------------------------------------------------------
Comment