TCP Port abhören
-
Tupo13 schrieb:
Also ich arbeite mit pcap.h aus einem einzigen Grund. Ich will Daten an einen Server schicken - das Problem dabei ist dass er einen bestimmten festen Wert für die Checksumme benötigt. Das lässt der Windows Kernel abeer nicht zu er überbügelt mir dann einfach den Wert mit der richtigen Checksumme und verschickt das Paket (deshalb versagen sockets...)
Ich benötige also einen Low Level Treiber ->pcap.hWarum verwendest Du nicht Raw-Sockets? Damit müsste es eigentlich gehen (auch mit XP-SP2).
Tupo13 schrieb:
Kenne mich in dieser Hinsicht leider nicht wirklich gut aus
Kennst du ein pcap.h Forum? (Windows)Ich kenn mich mit pcap nicht aus

Tupo13 schrieb:
Mien Frage ist jetzt: gibt es die Möglichkeit mit winsock.... einen Port für diese Zeit zu belegen es muss ja anscheinend nichts anderes passieren damit kein Reset gesendet wird
Wenn Du ihn belegen willst, dann ist es doch schon zu spät, oder?
-
danke Jochen für deine Hilfe
zu spät ist es eigentlich nicht
Hier ein Auszug von MS
Wenn keine Anwendung den TCP-Port abhört, wird an den Absender das TCP-Segment "Connection Reset" zurückgesendet und das Paket gelöscht.
Ich benötige also eine Anwendung die diesen Port abhört.
-ich will die Pakete die an diesem Port ankommen nicht weiterverarbeiten
-ich benötige diese "Anwendung..." nur damit das Betriebsystem das Paket nicht verwirft
-empfangen und verarbeiten tu ich es mit pcap.h was ja eigentlich sonst einwandfrei funktioniertGruß Tupo13
-
Tupo13 schrieb:
-ich benötige diese "Anwendung..." nur damit das Betriebsystem das Paket nicht verwirft
Dann mach das doch. Oder was ist Deine Frage?
-
Dann mach das doch. Oder was ist Deine Frage?
Meine Frage ist Wie?
Wie schon gesagt kenne mich da nicht aus was für möglichkeiten gibt es Sockets..?
-
- WSAStartup
- socket
- bind
- listenhttp://msdn.microsoft.com/library/en-us/winsock/winsock/listen_2.asp
-
@ Danke Jochen
Ich habe es jetzt so versucht, ich möchte den Port 3854 belegen. Meine IP
ist 192.168.17.140 kompilieren funktioniert - der Reset wird aber immer noch gesendet.Höre ich so den Port 3854 auc meinem PC ab?
// Initialize Winsock WSADATA wsaData; int iResult = WSAStartup(MAKEWORD(2,2), &wsaData); if (iResult != NO_ERROR) printf("Error at WSAStartup()\n"); //---------------------- // Create a SOCKET for listening for // incoming connection requests. SOCKET ListenSocket; ListenSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (ListenSocket == INVALID_SOCKET) { printf("Error at socket(): %ld\n", WSAGetLastError()); WSACleanup(); return; } //---------------------- // The sockaddr_in structure specifies the address family, // IP address, and port for the socket that is being bound. sockaddr_in service; service.sin_family = AF_INET; service.sin_addr.s_addr = inet_addr("192.168.17.140"); service.sin_port = htons(3854); if (bind( ListenSocket, (SOCKADDR*) &service, sizeof(service)) == SOCKET_ERROR) { printf("bind() failed.\n"); closesocket(ListenSocket); return; } //---------------------- // Listen for incoming connection requests // on the created socket if (listen( ListenSocket, 1 ) == SOCKET_ERROR) printf("Error listening on socket.\n");
-
Sendet der Server ein UDP oder TCP Packet?
Falls UDP, dann ist das abhören eines TCP-Ports natürlich falsch...
Dann solltest Du anstall "listen das "recvfrom" verwenden...
-
Er verwendet TCP
Danke schon mal - hast mir sehr geholfen
Aber eine Frage hätte ich noch:
also deiner Meinung nach müsste wenn ich diesen Code zu beginn des Programms ausführe der Port belegt seinGruß Tupo13
-
Wie "beleget"? er müsste hier zumindest auf Pakete warten...
Kannst Du auch mit "netstat -a" anzeigen...
-
Also der Port hat den Status abhören - danach schicke ich die Pakete los
leider wird der Reset immer noch geschickt - keine Ahnung weshalbBin echt am verzweifeln
Gruß Tupo13