Fehler im Socket Tutorial?

Online-tutorials.net Forenübersicht/C++ / C#/Fehler im Socket Tutorial?

Antworten Neues Thema Bottom Seite 1 2 

Autor | Nachricht      nächster / vorheriger Thread

Mesias
Einsteiger

avatar

Registriert seit: 12.2004
Beiträge:6

Fehler im Socket Tutorial?
Hab euer Socket-Tutorial durchgelesen und hänge an der Stelle wo SOCKET s; steht, denn der Compiler schreibt jedesmal dass der typ von s definiert werden muss und SOCKET anscheinend nicht funktioniert

Fehlermeldung:
mainsock.cpp:55: error: ISO C++ forbids declaration of `s' with no type
mainsock.cpp:57: error: syntax error before `if'

30.12.2004 17:29Profil >> Zitat >> IP gespeichert 
Keywords:c++,tutorial,fehler,socket

Simon
Online-tutorials.net Administrator

avatar

Registriert seit: 01.1970
Wohnort:Dornbirn
Beiträge:1181

Socket Tutorial
Hallo,

erstmal Willkommen im Forum.

Ich vermute, dass da irgend ein Header fehlt.

Hast du

Code:


#include  
#include 



includiert?

Falls ja, dann versuch mal diese beiden Dateien zu kompilieren: http://www.c-worker.ch/tuts/sock.c, http://www.c-worker.ch/tuts/socksrv.c

Wenn das funktioniert, dann poste bitte den Code, damit ich das genauer anschauen kann.

Das Tutorials stammt übrigens nicht von uns, sondern von http://www.c-worker.ch laugh
-------------------

http://www.online-tutorials.net/wiki/funktionsname

Für was Personal Firewalls GnuGP emails verschlüsseln C++ Tutorial Sicherheits Tutorials



30.12.2004 18:04Homepage >> icq status >>Profil >> Zitat >> IP gespeichert 
Keywords:C++, socket tutorial, Tutorial, winsock2.h

Mesias
Einsteiger

avatar

Registriert seit: 12.2004
Beiträge:6

geht und geht nicht :/
Die beiden angegeben Files gehen , jedoch finde ich bei mir den Fehler nicht:


Code:


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

//Prototypen 

int startWinsock(void); 

int main() 


  
  long rc; 
  SOCKET s;
  
  
  rc=startWinsock(); 

  if(rc!=0) 

  { 

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

    return 1; 

  } 

  else 

  { 

    printf("Winsock gestartet!\n"); 

  } 

  return 0; 



int startWinsock(void) 



  WSADATA wsa; 

  return WSAStartup(MAKEWORD(2,0),&wsa); 



s=socket(AF_INET,SOCK_STREAM,0); 

if(s==INVALID_SOCKET) 



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

  return 1; 



else 



  printf("Socket erstellt!\n"); 





return 0;



30.12.2004 20:53Profil >> Zitat >> IP gespeichert 

Simon
Online-tutorials.net Administrator

avatar

Registriert seit: 01.1970
Wohnort:Dornbirn
Beiträge:1181

Winsock Tutorial
Der Teil:

Code:


s=socket(AF_INET,SOCK_STREAM,0); 

if(s==INVALID_SOCKET) 

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

return 1; 


else printf("Socket erstellt!\n");



gehört in die int main Schleife, und die int StarWinsock(void) Funktion gehört ganz nach unten.

So:

Code:


#include   
//#include   
#include   

//Prototypen  

int startWinsock(void);  

int main()  

{  
   
  long rc;  
  SOCKET s; 
   
   
  rc=startWinsock();  

  if(rc!=0)  

  {  

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

    return 1;  

  }  

  else  

  {  

    printf("Winsock gestartet!\n");  

  }  

    s=socket(AF_INET,SOCK_STREAM,0);  

    if(s==INVALID_SOCKET)  

    {  

      printf("Fehler: Der 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);  

}  



Du hast ganz am Schluss einen Codeteil, der in keiner Funktion ist laugh

Ich hoffe das hat dir geholfen, wenn du weitere Fragen hast kannst du sie jederzeit stellen.
-------------------

http://www.online-tutorials.net/wiki/funktionsname

Für was Personal Firewalls GnuGP emails verschlüsseln C++ Tutorial Sicherheits Tutorials

Firefox - besser durch das Web!



30.12.2004 23:17Homepage >> icq status >>Profil >> Zitat >> IP gespeichert 
Keywords:Funktion, Winsock, C++

Mesias
Einsteiger

avatar

Registriert seit: 12.2004
Beiträge:6

thx
ein sehr mutiges angebot :D

also thx das klappt :)

30.12.2004 23:32Profil >> Zitat >> IP gespeichert 

Mesias
Einsteiger

avatar

Registriert seit: 12.2004
Beiträge:6


hab jetzt mal versucht eine verbindung mit dem irc.quakenet.eu.org server herzustellen via port 6666 und protokoll 1459(hab die entsprecheneden Zeilen abgeändert).
Bekomme aber schon beim Erstellen des Sockets einen Fehlercode:
–10043 INTERNER FEHLER: ist beim Abruf eines Blobs aufgetreten - Nulllänge. (weis nicht ob der Text stimmt hab den ergoogled) aber mir sagt die Fehlermeldung nichts.

31.12.2004 04:15Profil >> Zitat >> IP gespeichert 

Mesias
Einsteiger

avatar

Registriert seit: 12.2004
Beiträge:6


und gleich noch ne frage :)

habe den pfad des aktuellen verzeichnisses in einer variablen szDirectory, die diesen mit cout auch korrekt ausgibt, anschließend habe ich den datei namen (config.ini). dies versuche ich nun irgendwie miteinander zu verbinden, damit ich die ini auslesen kann(wenn ich sie ins windows kopiere und die pfadangabe weglasse klappts :) )
hier das entscheidende stück code:

Code:


int iMatches = GetPrivateProfileInt( "settings", "wert1",
DEFAULTVALUE_MATCHES, "szDirectory\\config.ini" );



31.12.2004 13:29Profil >> Zitat >> IP gespeichert 

Simon
Online-tutorials.net Administrator

avatar

Registriert seit: 01.1970
Wohnort:Dornbirn
Beiträge:1181


Quote:


Code:


int iMatches = GetPrivateProfileInt( "settings", "wert1",
DEFAULTVALUE_MATCHES, "szDirectory\\config.ini" );



Ich vermute du programmierst mit C:

Code:


char strBuffer[255];
sprintf(strBuffer,"%s\\config.ini",szDirectory);
int iMatches = GetPrivateProfileInt( "settings", "wert1",
DEFAULTVALUE_MATCHES, strBuffer);



das "%s" (String) im 2. Parameter von sprintf wird dann einfach durch szDirectory ersetzt.

Wegen dem irc Server: sowas habe ich noch nie gemacht, da muss ich zuerst googeln.

[edit]
support.ipswitch.com/kb/WSK-19980714-EM26.htm
Das hier könnte auch ganz nützlich sein

Ich sehe gerade das du C++ verwendest:

Code:


oben:
include 

std::string strFilename = szDirectory + "\\config.ini";
int iMatches = GetPrivateProfileInt( "settings", "wert1",
DEFAULTVALUE_MATCHES, strFilename.c_str());



Die Variante ist gegen bufferoverflows geschützt.
-------------------

http://www.online-tutorials.net/wiki/funktionsname

Für was Personal Firewalls GnuGP emails verschlüsseln C++ Tutorial Sicherheits Tutorials

Firefox - besser durch das Web!



01.01.2005 17:46Homepage >> icq status >>Profil >> Zitat >> IP gespeichert 
Keywords:sprintf, c++, winsock
                   nächster / vorheriger Thread

Antworten Neues Thema Top Seite 1 2