SFML::Network::TCP Pakete auslesen
-
Hallo erstmal,
ich hoffe es ist das richtige Forum, habe es jetzt mal hier rein weil SFML zu Multimedia gehört und nicht wirklich pures Win Api ist.
Grundidee:
Ich möchte von den Spiel WC3 die TCP Pakete die von WC3 an mich gesendet werden mit meinen Programm auslesen und darauf entsprechend reagieren. Dazu habe ich mit Wireshark die Pakete analyisiert.
Habe die IP vom entsprechenden Server und den PORT über den ich mit WC3 kommuniziere (6112).Bibiliothek:
Da ich schon ein wenig Erfahrung mit SFML habe, die lib super dokumentiert ist und network unterstützt wollte ich es mit SFML versuchen meine Idee umzusetzen.Zuerst habe ich mir ein kleines Chatprogramm geschrieben um ersteinmal mich ein wenig mit SFML::Network auseinanderzusetzen.
Aber als ich mich daran versucht habe die TCP Pakete die WC3 zu mir schickt zu sniffen hat mein Programm gemeint es kommen keine Pakete an. Habe es aber mit Wireshark überprüft und es kommen natürlich die TCP Pakete von WC3 an Port 6112 korrekt an.
Code:
#include "stdafx.h" int main() { sf::SocketTCP Client; const unsigned int wc3_port = 6112; const std::string wc3_ip = "213.248.106.67"; if(Client.Connect(wc3_port, wc3_ip.c_str()) != sf::Socket::Done) { // Error... } char Buffer[128]; std::size_t Received; if (Client.Receive(Buffer, sizeof(Buffer), Received) != sf::Socket::Done) { // Error... } //Buffer bleibt Leer keine Pakete angekommen keep_window_open(); return 0; }
Hab den Code größtenteils aus der Dokumentation übernommen da ich denke das der Code genau dafür gedacht ist.
**
Frage:**
-Kann ich mein vorhaben überhaupt mit der SFML umsetzen? Oder gibt es andere Libs wo ich es besser einfacher umsetzen kann?-Könntet ihr mir so eine Vorgehensweise in Pseudocode erläutern damit ich ans Ziel komme?
-Könntet ihr mir meine Fehler aufzeigen oder ein Beispielprogramm geben?
Anlagen:
http://imageshack.us/photo/my-images/855/captureyxl.jpg/
http://imageshack.us/photo/my-images/6/datal.jpg/
-
Du kannst nicht einfach so die TCP Pakete die an eine andere Anwendung gehen abfangen. Schau dir mal libpcap an.
-
Ich möchte sie ja nicht abfangen ich möchte sie "nur" mitlesen.
Müsste doch eigentlich funktionieren, wenn ich mir ein Socket erstelle und ihn sage er soll an den Port 6112 hören oder? Ich will die Pakete ja nicht manipulieren.
-
Lyie schrieb:
Ich möchte sie ja nicht abfangen ich möchte sie "nur" mitlesen.
Müsste doch eigentlich funktionieren, wenn ich mir ein Socket erstelle und ihn sage er soll an den Port 6112 hören oder?Nein, wie stellst du dir das vor? Die Verbindung gehört dem Socket in WC3, die Pakete dieser Verbindung gehen an WC3, gibt keinen Weg da über Sockets ranzukommen.
Du wirst libpcap oder was Vergleichbares brauchen wenn du "mitlesen" willst.
-
dot schrieb:
gibt keinen Weg da über Sockets ranzukommen.
Die nicht-TCP Dinger nennt man aber auch Sockets.
-
cooky451 schrieb:
dot schrieb:
gibt keinen Weg da über Sockets ranzukommen.
Die nicht-TCP Dinger nennt man aber auch Sockets.
Was genau willst du uns damit sagen?
Auf Socket-Ebene gibts sowas wie TCP Pakete übrigens gar nicht...
-
dot schrieb:
cooky451 schrieb:
dot schrieb:
gibt keinen Weg da über Sockets ranzukommen.
Die nicht-TCP Dinger nennt man aber auch Sockets.
Was genau willst du uns damit sagen?
Dass man über Raw-Sockets schon an die Daten kommt..
-
cooky451 schrieb:
dot schrieb:
cooky451 schrieb:
dot schrieb:
gibt keinen Weg da über Sockets ranzukommen.
Die nicht-TCP Dinger nennt man aber auch Sockets.
Was genau willst du uns damit sagen?
Dass man über Raw-Sockets schon an die Daten kommt..
Schonmal versucht? Unter Windows kannst du das vergessen
-
dot schrieb:
cooky451 schrieb:
dot schrieb:
cooky451 schrieb:
dot schrieb:
gibt keinen Weg da über Sockets ranzukommen.
Die nicht-TCP Dinger nennt man aber auch Sockets.
Was genau willst du uns damit sagen?
Dass man über Raw-Sockets schon an die Daten kommt..
Schonmal versucht? Unter Windows kannst du das vergessen
Also soweit ich mich erinnere schon, auch wenn das schon lange her ist. http://www.megapanzer.com/2010/05/22/tcpsniffer/
-
Interessant, sieht aus als ginge das Tatsächlich wieder. Als ich es das letzte Mal versucht hab, blieb mir am Ende nur libpcap...
-
Ok danke für eure Beiträge dann werd ich mir mal libpcap anschauen!