Frage zu Winsock Code
-
Hallo Forum!
Ich bin gerade dabei mich in die Grundlagen der Winsocks unter C++ einzuarbeiten, als IDE verwende ich Turbo C++.
Nun, das Programm soll einfach Winsock starten und ein Socket erstellen.
Winsock startet auch nur beim erstellen des Sockets hapert es scheibar! Ich bekomme leider keine Fehler ausgegeben und da ich darin noch blutiger Anfänger bin kann ich auch nicht sagen an was es liegt.//--------------------------------------------------------------------------- #include <iostream.h> #include <time.h> #include <winsock.h> #include <stdlib.h> #include <stdio.h> #include <conio.h> #pragma hdrstop //--------------------------------------------------------------------------- //Prototypen int startWinsock(void); int main() { cout<<"Versuche Winsock zu starten...\n\n"; long rc; SOCKET s; s=socket(AF_INET,SOCK_STREAM,0); rc=startWinsock(); if(rc!=0) { printf("Fehler: startWinsock, fehler code: %d\n",rc); getch(); return 1; } else { printf("Winsock gestartet!\n"); getch(); } if(s==INVALID_SOCKET) { printf("Fehler: Der Socket konnte nicht erstellt werden, fehler code: %d\n",WSAGetLastError()); getch(); return 1; } else { printf("Socket erstellt!\n"); getch(); } }// main /*****************************************************/ int startWinsock(void) { WSADATA wsa; return WSAStartup(MAKEWORD(2,0),&wsa); } //return 0; //---------------------------------------------------------------------------
Vlt. kann mir hier ein Profi helfen.
Danke
Radial
-
Hallo,
du machst ja Sachen...wenn versucht wird, den Socket zu erzeugen, bevor die Sockets-Bibliothek initialisiert wurde...dann kann das schon mal zu diesem Fehler führen
.
MfG,
Probe-Nutzer
-
Danke dir!
Hätte ich von selbst drauf kommen können...
-
Hallo,
//Edit: Habs durch die FAQ gelöst
Eine Frage hätte ich noch und zwar mache ich eine Benutzerabfrage in der ein Benutzer die IP des Zielrechners eingeben kann.
nur leider nimmt
addr.sin_addr.s_addr=inet_addr("127.0.0.1");
bei mir keine Variablen an. Deklariert habe ich sie als
char ip[32];
eingelesen wird sie mit
scanf("%s", &ip);
Ich habe schon versucht die Variable anstelle der IP einzutragen also
addr.sin_addr.s_addr=inet_addr("ip");
Aber ich bekomme jedesmal den Fehlercode 10047 - die Verbindung ist gescheitert. Ich vermute es liegt daran das die Funktion meine "ip" Variable nicht annimmt - das soll sie aber
Gruß
Radial
-
Damit sollte es gehen aber wieso mischt du C++ mit C O_o
cout<<"Versuche Winsock zu starten...\n\n";
printf("Fehler: startWinsock, fehler code: %d\n",rc);
printf("IP eingeben: "); gets (ip); // Verbinden memset(&addr,0,sizeof(SOCKADDR_IN)); addr.sin_family=AF_INET; addr.sin_port=htons(12345); addr.sin_addr.s_addr=inet_addr(ip);