UDP-IP einer Nachricht herausfinden
Übersicht

MynBetreff: UDP-IP einer Nachricht herausfinden |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hey,
ich würde gerne wissen wie ich bei B-Max (ohne Netzwerklib) von einer eingehenden UDP Message die Ip herausfinden kann. In BB geht dies ja durch UdpMsgIp (oder so ähnlich).. Ich habe das derzeit so: Code: [AUSKLAPPEN] If(SocketReadAvail(udp))Then remoteip=(SocketRemoteIP(udp)) usw .... Antworten Endif "udp" ist ein funktionsfähiger Socket. Das ganze funktioniert auch so lange ich die ClientIP angebe von dem die Message kommt. Ich brauche ja die Ip vom Client um zu Antworten , bzw. per Code: [AUSKLAPPEN] udpconnected=ConnectSocket(udp,remoteip,remoteport)
antworten zu können? Derzeit bekomme ich bei RemoteIp eine 0 zurückgeliefert... |
||
![]() |
ZEVS |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich glaube, bei BMax ist 0 ein Synonym von localhost, bin aber nicht sicher.
Außerdem kann es sein, dass RemoteIp nur die mittels ConnectSocket eigegebene ip ist, in diesem Falle also sinnlos. Wie genau sieht deine Implementierung aus, mit der du die Nachricht empfängst? ZEVS |
||
![]() |
BtbN |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn sich da nicht inzwischen was getan hat: Garnicht
Must selber mittels StdC-Funktion recvfrom die nachrichten empfangen. Bmax Sockets nutzen nur recv. recvfrom gibt gleichzeitig auch an, woher das paket kommt, recv nicht. |
||
Myn |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich lasse einfach den Client mit ConnectSocket beim Server zu connecten und sende dann
etwas zum Server. Nun weiß ich nicht wie ich dem Client antworten kann, da ich ja bei UDP nicht SocketAccept benutzen kann. Wie kann ich also dem Client antworten? |
||
![]() |
ZEVS |
![]() Antworten mit Zitat ![]() |
---|---|---|
Über recvfrom_ Parameter 5/6 ermittelst du remoteip / remoteport. Dahin kannst du mit sendto_ Parameter 5/6 zurücksenden. Es stellt sich die Frage, ob der Client die Nachricht empfangen kann. Mit Holepunch und BlitzMax habe ich bisher keine guten Erfahrungen gemacht. Mal schauen, ob du mehr Glück hast.
Rein spekulativ möchte ich dich darauf hinweisen, dass UPD-Sockets keine SocketStreams unterstützen. ZEVS |
||
Myn |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
In Tcp habe ich einen Server+Client in den letzten Tagen hinbekommen,
was ihr aber jetzt hier von mir wollt versteh ich nicht^^ Was ist recvfrom_/sendto_ oder Zitat: Must selber mittels StdC-Funktion recvfrom die nachrichten empfangen.
? Bisher benutze ich keine Lib oder sonstwas und habe keine Ahnung was genau ihr meint? Die SuFu sagt auch nix ![]() Es muss doch möglich sein die IP von einer eingehenden UDP Nachricht zu ermitteln ..?! Hoffe auf genauere Aussagen von euch, bisher habe ich nur in BB gearbeitet und dort ist es ja irgendwie einfacher ![]() |
||
![]() |
Mr.Keks |
![]() Antworten mit Zitat ![]() |
---|---|---|
Durch das Modul pub.stdc gibt es Zugriff auf die C-Funktion "recvfrom", mit der man beim Empfangen eines UDP-Pakets auch eine Variable übergeben kann, in die dann als eine Art zweite Rückgabe die Senderadresse gepackt wird. Stell dich aber darauf ein, dass dein Code dann mehr wie https://en.wikipedia.org/wiki/...s#Server_2 als wie Basic aussieht... (Offenbar ist die BlitzMax-API da wirklich Müll?) | ||
MrKeks.net |
![]() |
ZEVS |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ist es auch. Die Funktionen sind in Pub.StdC definiert, das solltest du haben.
Die Verwendung geht wie folgt: BlitzMax: [AUSKLAPPEN] Function recvfrom_( socket,buf:Byte Ptr,size,flags,sender_ip Var,sender_port Var) Den Socket-Pointer (Int) findest du als TSocket._socket. Damit geht das so: BlitzMax: [AUSKLAPPEN] Local socket:TSocket = ... ZEVS |
||
Myn |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke für eure Hilfe, mal sehen ob ich damit was anfangen kann.
Ich denke ich werds aber einfach anderes realisieren, es gibt ja meistens mehrere Möglichkeiten. Falls ich nocheinmal Hilfe hierzu benötige melde ich mich ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group