Hallo,
ich benutze (oder besser gesagt: ich würde gern benutzen) die mitgelieferte Komponente TUdpSocket um mit einer von mir aufgebauten Hardware zu kommunizieren. Ich benutze C++Builder 2007.
Die Komponente sendet auch die richtigen Daten, allerdings immer auf dem falschen Port. Zur Überwachung des NEtzwerks verwende ich Wireshark, hier sehe ich alle Pakete und kann mir auch Source- und Destinationport betrachten.
Hier mein Init des Sockets:
sub=UdpSocket1->LocalHostAddr(); //get local IP
UdpSocket1->LocalHost=sub; //and set it to udp
Memo1->Text="Local IP is "+sub;
UdpSocket1->LocalPort="30303";
UdpSocket1->Active=true;
UdpSocket1->Connect();
if(UdpSocket1->Connected)
Edit1->Text="UDPSocket opened and connected.";
else
Edit1->Text="UDPSocket opened and failed to connect.";
Remotehost und -port hab ich zur Entwicklungszeit definiert. Die Daten kommen auch auf dem Remote an, allerdings benutzt das Mistding immer einen anderen Localport. Dieser ändert sich auch von Kompilationslauf zu Kompilationslauf.
Des weiteren hab ich das Problem, dass das OnReceive-Event nie getriggert wird, selbst wenn die richtigen Pakete ankommen.
void __fastcall TForm1::UdpSocket1Receive(TObject *Sender, PChar Buf,
int &DataLen)
{
Memo1->Text=(AnsiString)Buf;
}
Hab da auch 'nen Breakpoint drin, er kommt da aber nie vorbei. Auch bei Broadcast auf dem Port 30303.
Blockmode habe ich als bmNonBlocking definiert.
So langsam bin ich echt am verzweifeln, hat jemand eine Idee wo das Problem liegt?
ich benutze (oder besser gesagt: ich würde gern benutzen) die mitgelieferte Komponente TUdpSocket um mit einer von mir aufgebauten Hardware zu kommunizieren. Ich benutze C++Builder 2007.
Die Komponente sendet auch die richtigen Daten, allerdings immer auf dem falschen Port. Zur Überwachung des NEtzwerks verwende ich Wireshark, hier sehe ich alle Pakete und kann mir auch Source- und Destinationport betrachten.
Hier mein Init des Sockets:
sub=UdpSocket1->LocalHostAddr(); //get local IP
UdpSocket1->LocalHost=sub; //and set it to udp
Memo1->Text="Local IP is "+sub;
UdpSocket1->LocalPort="30303";
UdpSocket1->Active=true;
UdpSocket1->Connect();
if(UdpSocket1->Connected)
Edit1->Text="UDPSocket opened and connected.";
else
Edit1->Text="UDPSocket opened and failed to connect.";
Remotehost und -port hab ich zur Entwicklungszeit definiert. Die Daten kommen auch auf dem Remote an, allerdings benutzt das Mistding immer einen anderen Localport. Dieser ändert sich auch von Kompilationslauf zu Kompilationslauf.
Des weiteren hab ich das Problem, dass das OnReceive-Event nie getriggert wird, selbst wenn die richtigen Pakete ankommen.
void __fastcall TForm1::UdpSocket1Receive(TObject *Sender, PChar Buf,
int &DataLen)
{
Memo1->Text=(AnsiString)Buf;
}
Hab da auch 'nen Breakpoint drin, er kommt da aber nie vorbei. Auch bei Broadcast auf dem Port 30303.
Blockmode habe ich als bmNonBlocking definiert.
So langsam bin ich echt am verzweifeln, hat jemand eine Idee wo das Problem liegt?
Comment