Probleme mit Sockets in C/C++

Ich habe mich zwar bemüht, aber so komme ich nicht weiter. Wenn ich den folgenden Code compilieren will bekomme ich 22 Fehler. Der Code soll einen Client Socket darstellen.

Code:
#include <stdio.h>
#include <windows.h>
#include <winsock.h>
#include <string.h>

int main ()
{

	WSADATA wsa;
    WSAStartup (MAKEWORD (1,1) ,&wsa);


	SOCKET s;
	s = socket (AF_INET, SOCK_STREAM, 0 );


	struct sockaddr_in 
	{
    short int			sin_family;  
    unsigned short int	sin_port;    
    struct				in_addr		sin_addr;    
	};
		
	struct sockaddr_in addr;
	addr.sin_addr.s_addr = inet_addr("192.168.0.2"); 
	addr.sin_port = htons (1000);
	addr.sin_family = AF_INET;

	
	connect ( s, ( sockaddr *) &addr, sizeof (addr) );


	int nachricht;
	char buffer[] = "Willkommen zum Server \n";
	nachricht = send ( s, buffer, strlen (buffer), 0 );


	return 0;

}

Hier die Fehler:

error C2275: "SOCKET" : Ungültige Verwendung dieses Typs als Ausdruck
c:\programme\microsoft visual studio\vc98\include\winsock.h(35) : Siehe Deklaration von 'SOCKET'
c:\programme\microsoft visual studio\myprojects\client\client1\client1.c(13) : error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 's'
c:\programme\microsoft visual studio\myprojects\client\client1\client1.c(13) : error C2065: 's' : nichtdeklarierter Bezeichner
c:\programme\microsoft visual studio\myprojects\client\client1\client1.c(18) : error C2143: Syntaxfehler : Fehlendes ';' vor '<class-head>'
c:\programme\microsoft visual studio\myprojects\client\client1\client1.c(20) : error C2143: Syntaxfehler : Fehlendes ';' vor 'type'
c:\programme\microsoft visual studio\myprojects\client\client1\client1.c(21) : error C2143: Syntaxfehler : Fehlendes ';' vor 'type'
c:\programme\microsoft visual studio\myprojects\client\client1\client1.c(25) : error C2143: Syntaxfehler : Fehlendes '{' vor '.'
c:\programme\microsoft visual studio\myprojects\client\client1\client1.c(25) : error C2059: Syntaxfehler : '.'
c:\programme\microsoft visual studio\myprojects\client\client1\client1.c(26) : error C2143: Syntaxfehler : Fehlendes '{' vor '.'
c:\programme\microsoft visual studio\myprojects\client\client1\client1.c(26) : error C2059: Syntaxfehler : '.'
c:\programme\microsoft visual studio\myprojects\client\client1\client1.c(27) : error C2143: Syntaxfehler : Fehlendes '{' vor '.'
c:\programme\microsoft visual studio\myprojects\client\client1\client1.c(27) : error C2059: Syntaxfehler : '.'
c:\programme\microsoft visual studio\myprojects\client\client1\client1.c(30) : error C2059: Syntaxfehler : ','
c:\programme\microsoft visual studio\myprojects\client\client1\client1.c(30) : error C2143: Syntaxfehler : Fehlendes ')' vor '('
c:\programme\microsoft visual studio\myprojects\client\client1\client1.c(30) : error C2143: Syntaxfehler : Fehlendes ')' vor '*'
c:\programme\microsoft visual studio\myprojects\client\client1\client1.c(30) : error C2091: Funktionsergebnis ist eine Funktion
c:\programme\microsoft visual studio\myprojects\client\client1\client1.c(30) : error C2143: Syntaxfehler : Fehlendes '{' vor '*'
c:\programme\microsoft visual studio\myprojects\client\client1\client1.c(30) : error C2059: Syntaxfehler : ')'
c:\programme\microsoft visual studio\myprojects\client\client1\client1.c(30) : error C2059: Syntaxfehler : '&'
c:\programme\microsoft visual studio\myprojects\client\client1\client1.c(35) : error C2099: Initialisierung ist keine Konstante
c:\programme\microsoft visual studio\myprojects\client\client1\client1.c(38) : error C2059: Syntaxfehler : 'return'
c:\programme\microsoft visual studio\myprojects\client\client1\client1.c(40) : error C2059: Syntaxfehler : '}'
Fehler beim Ausführen von cl.exe.

Wäre nett, wenn mir jemand helfen könnte.
Danke.


BleedingSoul
 
ich bekomm zwar ganz andere fehlermeldungen
aber jedenfalls wenn ich die Ws2_32.lib mitlinke funzt es
 
Hmm.. ich hab gelesen, dass man die wsock32.lib includieren soll, aber da bekomme ich einen Fehler, nämlich das die lib nicht gefunden wird.

Aber danke... ich werd's mit Ws2 probieren. Vielleicht sind die Fehler Compilerabhängig. Ich benutze unter Windows den MS Visual Studio C++.

mfg
BleedingSoul
 
client1.c
c:\programme\microsoft visual studio\myprojects\client\client1\client1.c(5) : fatal error C1083: Include-Datei kann nicht geoeffnet werden: 'Ws2_32.lib': No such file or directory
Fehler beim Ausführen von cl.exe.

client1.exe - 1 Fehler, 0 Warnung(en)

Kommt das Gleiche. Mach ich da was falsch? Die libs werden doch auch wie die header normal includiert, oder?

Allerdings hab ich das Client und Server Programm schon unter Linux erstellt. Da geht es ( modifiziert mit anderen header dateien ) einwandfrei. Allerdings brauch ich ein Prog auf meinen Windows da ich mich über mein Netzwerk mit den anderen PC durch die Sockets verbinden will.

mfg
BleedingSoul
 
nein die libs werden folgendermaßen zum projekt hinzugefügt:
projekt -> einstellungen -> [registerkarte] linker -> [textfeld]objekt-/bibliothek-module
dort fügst du dann hinten noch Ws2_32.lib dran
 
Ach so wird das gemacht... danke für die Info.

Ok hab die lib jetzt so eingefügt. Allerdings bekommen ich 21 Fehler...
Versteh ich nicht. Wenn wir die gleichen Compiler haben und ich die lib hinzugefügt habe müsste es doch eigentlich gehen...

mfg
BleedingSoul
 
pack mal bitte das ganze projekt (nicht nur die eine quelltextdatei) mit winzip o.ä. und tu das mal hier in den anhang
so lässt sich der fehler vielleicht schneller finden ...
 
So am Rande: habe hier ein Tutorial schon länger her gefunden zu sockets (sehr aufschlussreich). Das Problem hatte ich auch (mit den 22 Fehlern).. ich musste dann die ws2_32.lib hinzufügen und es funzte...
 
Ja danke keymaker. Das tut kenn ich bereits. Wenn es auch bei dir mit der ws2_32.lib funktioniert dann liegt der Fehler wohl bei mir....


Eine Frage: welchen Projekttyp habt ihr gewählt (Konsolenanwendung dienstprogramm.. usw.) als ihr das Projekt erstellt habt?

mfg
BleedingSoul
 
wie schonmal gesagt, häng hier doch einfach mal dein projekt an
dann kann man mal reinschauen und findet den fehler wohl schneller als wenn wir hier noch 3 seiten vollschreiben

ansonsten zieh dir mal das aktuelle Service Pack für Visual Studio
hatte letztens nach ner neuinstallation auch probleme mit dem compiler gehabt - mit dem aktuellen SP gings dann
 
sorry hab ich irgendwie übersehen
ok also die datei client.c muss die endung .cpp haben - dann gehts (mit ws2_32.lib)
is mir gleich ins auge gesprungen als ich den ordner aufgemacht habe

aber den dateinamen hattest ja weiter oben eigentlich auch schon gepostet
hab hier wohl nur jeden zweiten post von dir gelesen :rolleyes: :D
 
Ok, hat sich erledigt. Hab den Code jetzt umgeschreiben und jetzt geht es ohne Fehler und Warnungen.

Code:
#include <stdio.h>
#include <windows.h>
#include <winsock.h>
#include <string.h>


int main ()
{

	int nachricht;
	int s;
	char buffer[] = "Willkommen zum Server \n";
	struct sockaddr_in addr;

	WSADATA wsa;
    WSAStartup (MAKEWORD (1,1) ,&wsa);
	
	s = socket (AF_INET, SOCK_STREAM, 0 );
	
	addr.sin_addr.s_addr = inet_addr("192.168.0.2"); 
	addr.sin_port = htons (1000);
	addr.sin_family = AF_INET;
	
	connect ( s, ( struct sockaddr*) &addr, sizeof(addr) );

	nachricht = send ( s, buffer, strlen (buffer), 0 );
		
	return 0;

}

Anscheinend arbeit mein Compiler nur nach den C89 Spezifikationen, die besagen, dass nach dem ersten Statement einer Funktion, das keine Variablendeklaration ist, keine Varaiblen mehr deklarieren werden dürfen. Oder man muss die C datei in eine C++ Datei umwandeln.

Dachte aber das ein Compiler wie der MS VS 6.0 das schon unterstützt.

mfg
BleedingSoul
 
hi.. sorry ivegotmail. Schlechtes Timing :]

Ja genau so ist es. Und wenn ich den Dateinamen vorher deutlich angegeben hätte(hab ich nicht weil Dateiname schon in der Fehlerliste steht) so wie es sich gehört hätte ich mir viel Zeit und Mühe sparen könne... naja. Man lernt nie aus.

Nochmals Danke.

mfg
BleedingSoul
 
Zurück
Oben