Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme.

C++ Winsock Fehler

Diskussion: C++ Winsock Fehler im Forum Code Kitchen, in der Kategorie Software Home; Anzeige Hallo ich hab folgendes Problem, ich hab folgenden c++ Code wenn ich in aber kompiliere bekomm ich massig fehlermeldungen. ...

Antwort
Alt 25.04.11, 15:24   #1 (permalink)
 
Registriert seit: 25.04.11
Skipp3r Leistung: Facit NTK
Likes: 0
erledigt C++ Winsock Fehler

Anzeige

Hallo ich hab folgendes Problem, ich hab folgenden c++ Code wenn ich in aber kompiliere bekomm ich massig fehlermeldungen.
Ich habe es mit Bloodshed c++, codeblocks und borland c++ 5 Compilern probiert.
Wenn jemand mal den Code durgucken könnte und mir den Fehler erklären könnte wäre spitze!

MeinCode:

Code:
#include <windows.h>
#include <winsock2.h>
#include <stdio.h>

//Prototypen

int startWinsock(void);
int main()

{

  long rc;

  SOCKET acceptSocket;

  SOCKADDR_IN addr;

  // Winsock starten

  rc=startWinsock();

  if(rc!=0)

  {

    printf("Fehler: startWinsock, fehler code: %d\n",rc);

    return 1;

  }

  else

  {

    printf("Winsock gestartet!\n");

  }

  // Socket erstellen

  acceptSocket=socket(AF_INET,SOCK_STREAM,0);

  if(acceptSocket==INVALID_SOCKET)

  {

    printf("Fehler: Socket konnte nicht erstellt werden, fehler code: %d\n",WSAGetLastError());

    return 1;

  }

  else

  {

    printf("Socket erstellt!\n");

  }

  return 0;

}


int startWinsock(void)

{

  WSADATA wsa;
  return WSAStartup(MAKEWORD(2,0),&wsa);
  }
Fehler:
Code:
C:\Users\Skip\Desktop\selectchatsrv.o:selectchatsrv.cpp|| undefined reference to `send@16'| C:\Users\Skip\Desktop

\selectchatsrv.o:selectchatsrv.cpp|| undefined reference to `WSAGetLastError@0'| C:\Users\Skip\Desktop

\selectchatsrv.o:selectchatsrv.cpp|| undefined reference to `WSAStartup@8'| C:\Users\Skip\Desktop

\selectchatsrv.o:selectchatsrv.cpp|| undefined reference to `socket@12'| C:\Users\Skip\Desktop\selectchatsrv.o:selectchatsrv.cpp|| undefined reference to `WSAGetLastError@0'| C:\Users\Skip\Desktop

\selectchatsrv.o:selectchatsrv.cpp|| undefined reference to `htons@4'| C:\Users\Skip\Desktop\selectchatsrv.o:selectchatsrv.cpp|| undefined reference to `bind@12'| C:\Users\Skip\Desktop

\selectchatsrv.o:selectchatsrv.cpp|| undefined reference to `WSAGetLastError@0'| C:\Users\Skip\Desktop

\selectchatsrv.o:selectchatsrv.cpp|| undefined reference to `listen@8'| C:\Users\Skip\Desktop\selectchatsrv.o:selectchatsrv.cpp|| undefined reference to `WSAGetLastError@0'| C:\Users\Skip\Desktop

\selectchatsrv.o:selectchatsrv.cpp|| undefined reference to `select@20'| C:\Users\Skip\Desktop\selectchatsrv.o:selectchatsrv.cpp|| undefined reference to `closesocket@4'| C:\Users\Skip\Desktop

\selectchatsrv.o:selectchatsrv.cpp|| undefined reference to `WSACleanup@0'| C:\Users\Skip\Desktop

\selectchatsrv.o:selectchatsrv.cpp|| undefined reference to `accept@12'| C:\Users\Skip\Desktop\selectchatsrv.o:selectchatsrv.cpp|| undefined reference to `inet_ntoa@4'| C:\Users\Skip\Desktop

\selectchatsrv.o:selectchatsrv.cpp|| undefined reference to `recv@16'| C:\Users\Skip\Desktop\selectchatsrv.o:selectchatsrv.cpp|| undefined reference to `inet_ntoa@4'| C:\Users\Skip\Desktop

\selectchatsrv.o:selectchatsrv.cpp|| undefined reference to `closesocket@4'| C:\Users\Skip\Desktop

\selectchatsrv.o:selectchatsrv.cpp|| undefined reference to `WSAGetLastError@0'| C:\Users\Skip\Desktop

\selectchatsrv.o:selectchatsrv.cpp|| undefined reference to `inet_ntoa@4'| C:\Users\Skip\Desktop\selectchatsrv.o:selectchatsrv.cpp|| undefined reference to `inet_ntoa@4'| C:\Users\Skip\Desktop

\selectchatsrv.o:selectchatsrv.cpp|| undefined reference to `closesocket@4'| C:\Users\Skip\Desktop

\selectchatsrv.o:selectchatsrv.cpp|| undefined reference to `inet_ntoa@4'| ||=== Build finished: 23 errors, 0 warnings ===|     printf("Fehler: startWinsock, fehler code: %d\n",rc);
Bedanke mich für jede Hilfe
MFG

Geändert von Skipp3r (26.04.11 um 00:03 Uhr)
Skipp3r ist offline   Mit Zitat antworten
Alt 25.04.11, 16:35   #2 (permalink)
 
Registriert seit: 06.06.09
Thunderb0lt Leistung: 8086
Likes: 6
Standard

Das sind Linkerfehler. Du musst gegen die Ws2_32.lib linken.
__________________
A good programmer looks both ways before crossing a one-way street.

Die Politik kann uns nur für so dumm verkaufen, wie wir sind.
Thunderb0lt ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 25.04.11, 17:17   #3 (permalink)
Themenstarter
 
Registriert seit: 25.04.11
Skipp3r Leistung: Facit NTK
Likes: 0
Standard

Zitat:
Zitat von Thunderb0lt Beitrag anzeigen
Das sind Linkerfehler. Du musst gegen die Ws2_32.lib linken.
Wie geht das?
Skipp3r ist offline   Mit Zitat antworten
Alt 25.04.11, 17:27   #4 (permalink)
 
Registriert seit: 06.06.09
Thunderb0lt Leistung: 8086
Likes: 6
Standard

In deinem Fall müsstest du wohl mit dem Parameter -lwsock32 compilieren. Ich empfehle dir aber dich etwas näher mit der Materie zu beschäftigen und auch erst mal selbst nach der Lösung für ein Problem zu suchen. Durch einfaches Copy&Paste kommst du sonst nie ans Ziel.

Es reicht auch, wenn du deine Frage hier stellst, du musst mir nicht eine Kopie deines Posts per PN schicken
__________________
A good programmer looks both ways before crossing a one-way street.

Die Politik kann uns nur für so dumm verkaufen, wie wir sind.
Thunderb0lt ist offline   Mit Zitat antworten
Alt 25.04.11, 18:33   #5 (permalink)
Themenstarter
 
Registriert seit: 25.04.11
Skipp3r Leistung: Facit NTK
Likes: 0
Standard

Zitat:
Zitat von Thunderb0lt Beitrag anzeigen
In deinem Fall müsstest du wohl mit dem Parameter -lwsock32 compilieren. Ich empfehle dir aber dich etwas näher mit der Materie zu beschäftigen und auch erst mal selbst nach der Lösung für ein Problem zu suchen. Durch einfaches Copy&Paste kommst du sonst nie ans Ziel.

Es reicht auch, wenn du deine Frage hier stellst, du musst mir nicht eine Kopie deines Posts per PN schicken
Ich hab dir ne PN geschrieben weil ich dachte dass du nichtmehr im Thread antwortest und ich wollt auf nummer sicher gehen

Winsock Tutorial: Grundlagen und TCP
Da habich den code her und ich fang halt noch an
Skipp3r ist offline   Mit Zitat antworten
Alt 25.04.11, 19:08   #6 (permalink)
 
Benutzerbild von Avenger
 
Registriert seit: 27.12.03
Avenger Leistung: Facit NTK
Avenger eine Nachricht über ICQ schicken
Likes: 0
Standard

Hättest du die Seite komplett gelesen, hättest du oben die Zeilen
Zitat:
Das Progamm muss gegen ws2_32.lib gelinkt werden. Falls man Visual Studio verwendet muss man bei den Projekteigenschaften unter Linker ws2_32.lib zu den Libraries hinzufügen.
Eventuell schafft aber auch folgende Zeile am Anfang des Quellcodes Abhilfe: #pragma comment( lib, "ws2_32.lib" )
gesehen
Avenger ist offline   Mit Zitat antworten
Alt 25.04.11, 22:10   #7 (permalink)
Themenstarter
 
Registriert seit: 25.04.11
Skipp3r Leistung: Facit NTK
Likes: 0
Standard

Ich habe das Tutorial gelesen aber ich hab nich verstanden wie man beim Bloodshed C++ gegen das Programm linkt ?!?
Kann mir das einer bitter erklären?
Skipp3r ist offline   Mit Zitat antworten
Alt 25.04.11, 22:42   #8 (permalink)
 
Registriert seit: 06.06.09
Thunderb0lt Leistung: 8086
Likes: 6
Standard

Zitat:
Zitat von Thunderb0lt Beitrag anzeigen
In deinem Fall müsstest du wohl mit dem Parameter -lwsock32 compilieren.
An welcher Stelle kommst du denn nicht weiter?
__________________
A good programmer looks both ways before crossing a one-way street.

Die Politik kann uns nur für so dumm verkaufen, wie wir sind.
Thunderb0lt ist offline   Mit Zitat antworten
Alt 25.04.11, 23:07   #9 (permalink)
Themenstarter
 
Registriert seit: 25.04.11
Skipp3r Leistung: Facit NTK
Likes: 0
Standard

Also ich hab mir ca vor 1,5 jahren mehrere Bücher über C++ lernen gekauft.
Weils mich intressiert hat und es mir spaß gemacht hat, hab ich mir mühe gegeben das alles zu lernen.
Nur wird in solchen Büchern immer mit consolen iostream programmen angefangen was mir dann nach nem halben jahr zu langweilig wurde.
Ich habs dann lange liegen gelassen und mich neulich zum ersten mal wieder mit der Materie beschäftigt.
Ich bin dann auf die Idee gekommen etwas weiter zu greifen und mit Winsockets zu arbeiten (Wollte mit einfachen chat programm anfangen und bin dann auf das gestoßen)

Ganze Geschichte hat die Pointe dass ich nicht wirklich erfahren bin aber durchaus gewillt bin mich damit zu befassen.

Mein Problem ist das ich das mit gegeneinander linken nich raffe ?!?!
Bei Hello World Programmen hat alles wunderbar funktioniert und auch bei Rechnern und Input output programmen musste ich nichts einstellen also es ging einfach mit neuem projekt usw.

Wie soll ich mit dem parameter Compilieren ???
Danke für die Hilfe !

MFG Skipper
Skipp3r ist offline   Mit Zitat antworten
Alt 25.04.11, 23:29   #10 (permalink)
 
Registriert seit: 06.06.09
Thunderb0lt Leistung: 8086
Likes: 6
Standard

Ich kann das gut verstehen, mir ging es früher ähnlich. Aber das Problem ist, wenn man sich übernimmt, wird man oft in Probleme rennen. Und wenn die dann zu hoch für einen sind, sodass man da steht wie der Ochs vorm Berg und nicht einmal weißt, wie man Hinweise für die Lösung finden kann, sollte man sich überlegen, ob man sich nicht zu viel zugemutet hat.

Aber wie dem auch sei. Wenn du nach deiner Fehlermeldung gesucht hättest, hättest du selbst herausgefunden, dass du gegen die Library linken musst.
Hast du mal in den Projekteinstellungen gesucht, ob da irgendwo die Rede von einem Linker ist? Oder man Kompilerparameter einstellen kann? Hört sich nicht danach an...

Also ich kenne deine IDE selbst nicht, aber nach etwas googeln...Es sollte in den Projekteinstellungen einen Reiter "Parameters" geben. Dort soll man dann Kompiler- und Linkeroptionen setzen können. Schau doch mal nach, ob das wirklich zutrifft.
__________________
A good programmer looks both ways before crossing a one-way street.

Die Politik kann uns nur für so dumm verkaufen, wie wir sind.
Thunderb0lt ist offline   Mit Zitat antworten
Alt 25.04.11, 23:41   #11 (permalink)
Themenstarter
 
Registriert seit: 25.04.11
Skipp3r Leistung: Facit NTK
Likes: 0
Standard

Welchen IDE benutzt du ?? vlt kann ich mir den dann von meinem dad hohlen.
btw. Mit welchem shortcut maximiere ich ein Fenster (Spiel,Programm ..) und bringe es in den Fenstermodus ?


SO ich habe es jetz. Aber es ist ja eine Konsolen ausgabe deswegen schließt es sofort wieder,
kann ich mit getch(); das fenster offen halten weil getch is ja nicht ansi-konform.
Stört das überhaupt? Und ich muss getch ja vor ende der main funktion einfügen also vor return oder?
Angehängte Grafiken
Dateityp: jpg Screen.jpg (88,2 KB, 7x aufgerufen)

Geändert von Skipp3r (25.04.11 um 23:56 Uhr)
Skipp3r ist offline   Mit Zitat antworten
Alt 25.04.11, 23:59   #12 (permalink)
 
Registriert seit: 06.06.09
Thunderb0lt Leistung: 8086
Likes: 6
Standard

Ich verwende Visual Studio 2010. Davon gibt es eine kostenlose Variante Visual Studio Express. Ist allerdings nicht Open Source.
__________________
A good programmer looks both ways before crossing a one-way street.

Die Politik kann uns nur für so dumm verkaufen, wie wir sind.
Thunderb0lt ist offline   Mit Zitat antworten
Alt 26.04.11, 00:02   #13 (permalink)
Themenstarter
 
Registriert seit: 25.04.11
Skipp3r Leistung: Facit NTK
Likes: 0
Standard

Zitat:
Zitat von Thunderb0lt Beitrag anzeigen
Ich verwende Visual Studio 2010. Davon gibt es eine kostenlose Variante Visual Studio Express. Ist allerdings nicht Open Source.
Danke für die Hilfe ich habs jetz komplet auf die Reihe bekomme, aber was bedeutet der Parameter?

Ich hab jetz wieder das problem das sich die KOnsole sofort schließt obwohl ich getchar(); und conio.h eingebunden habe

Geändert von Skipp3r (26.04.11 um 00:16 Uhr)
Skipp3r ist offline   Mit Zitat antworten
Alt 26.04.11, 21:00   #14 (permalink)
Senior Member
 
Registriert seit: 13.07.08
enkore Leistung: K 6-3enkore Leistung: K 6-3enkore Leistung: K 6-3
Likes: 85
Standard

-lwsock32 weist den Linker an, die libwsock32.dll.a in den Bindungsprozess mit einzubeziehen. In dieser Datei werden die Verknüfpungen der Funktionen (WSAStartup, socket, ...) mit der DLL festgehalten. Dadurch kann Windows dann beim Ausführen des Programms die Einsprungpunkte der Funktionen aus der DLL auslesen, und sie so bei einem Aufruf ausführen.
__________________
"It is the human race! The deterioration of the spirit of man. Man undermining himself, causing a self-willed, self-imposed, self-evident self-destruction."
+++ BREAKING +++ Troll ertrinkt im Planschbecken +++
enkore ist offline   Mit Zitat antworten
Alt 27.04.11, 13:35   #15 (permalink)
Themenstarter
 
Registriert seit: 25.04.11
Skipp3r Leistung: Facit NTK
Likes: 0
Standard

Und wiso schließt sich die console sofort wieder trots conio.h und getch ?
Skipp3r ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Software Home » Code Kitchen » C++ Winsock Fehler
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61