Raw Sockets
-
hi,
hab ein Problem mit Winsock mit Raw Sockets. Ich will will alle IP-Packete die ankommen bekommen. Bei dem Code (hab ich mir aus verschiedenen Sourcen zusammengebaut) kommt aber immer ein Fehler beim WSAIoctl() und bei bind(). Vielleich wisst ihr was falsch is, ich bin nämlich mit meinem C++ am Ende
!
Danke schon mal im vorraus.Mein Code:
/*Winsock initialisieren*/ WSADATA Winsock; if (WSAStartup(MAKEWORD(2,0), &Winsock) != 0) { MessageBox(hWnd, "Fehler: WSAStartup() != 0", "Fehler", 0); } /*Socket erstellen*/ sock = socket(AF_INET, SOCK_RAW, IPPROTO_RAW); if (sock == INVALID_SOCKET) { MessageBox(hWnd, "Fehler: socket() == INVALID_SOCKET", "Fehler", 0); } /*Header selbst bauen*/ BOOL value = TRUE; if (setsockopt(sock, IPPROTO_IP, IP_HDRINCL, (char *)&value, sizeof(BOOL)) == SOCKET_ERROR) { MessageBox(hWnd, "Fehler: setsockopt()", "Fehler", 0); } /**/ SOCKADDR_IN sockaddr; ZeroMemory(&sockaddr, sizeof(SOCKADDR_IN)); sockaddr.sin_family = AF_INET; sockaddr.sin_port = htons(0); sockaddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1"); if (bind(sock, (SOCKADDR *)&sockaddr, sizeof(SOCKADDR_IN)) == SOCKET_ERROR) { MessageBox(hWnd, "Fehler: bind() == SOCKET_ERROR", "Fehler", 0); } /**/ value = TRUE; DWORD BytesReturned; if (WSAIoctl(sock, SIO_RCVALL, &value, sizeof(BOOL), NULL, 0, &BytesReturned, NULL, NULL) == SOCKET_ERROR) { MessageBox(hWnd, "Fehler: WSAIoctl() == SOCKET_ERROR", "Fehler", 0); }
Ich war mal so freundlich
[ Dieser Beitrag wurde am 23.03.2003 um 19:13 Uhr von flenders editiert. ]
-
Editier doch bitte deinen Beitrag und bau einen Carriage-Return nach jeder if-Bedingung.