Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

DEVC++ : WINSOCK SOUS WINDOWS, POUR DÉBUTANTS.


Information sur la source

Catégorie :Réseaux & Internet Niveau : Initié Date de création : 11/10/2002 Date de mise à jour : 11/10/2002 20:06:55 Vu : 22 235

Note :
8 / 10 - par 3 personnes
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (17)
Ajouter un commentaire et/ou une note

Description

Ce code est destiné à ceux qui débutent dans la programmation socket.
On y voit comment initialiser un socket, définir les tampons pour envoyer et recevoir des données, définir le port et l'adresse.Et ceci sous Windows.Moi-même débutant avec Winsock, j'ai réussi ce soir à obtenir un code non saturé de bugs, arf enfin ça marche.
 

Source

  • #include<fstream.h>
  • #include<winsock.h>
  • #pragma comment(lib, "ws2_32.lib")
  • void main(void)
  • {
  • WSADATA WSAData;
  • WSAStartup(MAKEWORD(2,0), &WSAData);
  • SOCKET sock;
  • SOCKADDR_IN sin;
  • char buffer[1024];
  • char canal[50] = "GET / HTTP/1.0\nAccept: */*\n\n";
  • ofstream log("protsock.log"); // fichier pour enregistrer les données reçues.
  • sock = socket(AF_INET, SOCK_STREAM, 0);
  • sin.sin_addr.s_addr = inet_addr("205.188.160.121"); // site web www.aol.com
  • sin.sin_family = AF_INET;
  • sin.sin_port = htons(80); // port HTTP.
  • connect(sock, (SOCKADDR *)&sin, sizeof(sin)); // on se connecte sur le site web.
  • send(sock, canal, strlen(canal), 0); // on envoie la requête HTTP.
  • int i = recv(sock, buffer, sizeof(buffer), 0); // le buffer récupère les données reçues.
  • if (i != 0) // si le buffer reçoit des données.
  • {
  • log << buffer << endl; // enregistrement des données dans le fichier.
  • }
  • closesocket(sock); // on ferme le socket.
  • WSACleanup();
  • }
       #include<fstream.h>
       #include<winsock.h>
       #pragma comment(lib, "ws2_32.lib")

	void main(void)
	{
		WSADATA WSAData;
		WSAStartup(MAKEWORD(2,0), &WSAData);
	
		SOCKET sock;
		SOCKADDR_IN sin;

    char buffer[1024];
    char canal[50] = "GET / HTTP/1.0\nAccept: */*\n\n";
        ofstream log("protsock.log");      // fichier pour enregistrer les données reçues.


		sock = socket(AF_INET, SOCK_STREAM, 0);	
	
		sin.sin_addr.s_addr = inet_addr("205.188.160.121");  // site web www.aol.com
		sin.sin_family = AF_INET;
		sin.sin_port = htons(80);      // port HTTP.

		connect(sock, (SOCKADDR *)&sin, sizeof(sin));   // on se connecte sur le site web.
    send(sock, canal, strlen(canal), 0);         // on envoie la requête HTTP.
	int i = recv(sock, buffer, sizeof(buffer), 0);      // le buffer récupère les données reçues.


        if (i != 0)      // si le buffer reçoit des données.
        {
        log << buffer << endl;     // enregistrement des données dans le fichier.
        }

		 closesocket(sock);      // on ferme le socket.
		WSACleanup();
	}

Conclusion

Vos commentaires sont les bienvenus.J'ai quelques questions sur le compilateur DevC++ : peut-on créer des programmes en mode graphique ? Et comment crée t-on des application windows ? J'ai récemment découvert l'instruction MessageBox, j'aimerais connaître la multitude d'autres commandes sous DevC++.Merci.
 

Commentaires et avis

signaler à un administrateur
Commentaire de skone007 le 12/10/2002 12:48:25

kel version de Dev C++ dans la dernier ca marche pas prb de linkage
|\_______//|
    .SKone.
----------------

signaler à un administrateur
Commentaire de mmuller57 le 12/10/2002 17:52:15

ajoute -lwsock32 dans les options de compilations et la ça fonctionner

signaler à un administrateur
Commentaire de Sverdlovsky le 15/10/2002 16:37:31

Voici la version de Dev C++ que j'ai utilisé : - Bloodshed Dev-C++ 4 -

signaler à un administrateur
Commentaire de madprog le 19/10/2002 11:51:30

Yes c ce que je cherche depuis trois mois !!
MadProg is crossing the thingers and hoping that it works !

signaler à un administrateur
Commentaire de VoLc0m le 16/01/2003 20:17:08

g prob, kan je me connecte a irc.quakenet.org port 6667 dans le buffer g 3 caracteres genre : "x.
alors ke je devrai avoir un PING ou bien quakenet ki me demande de m'idendt...
Help plz ... :)

signaler à un administrateur
Commentaire de Sverdlovsky le 16/01/2003 20:37:49

Pour utiliser les sockets avec mIRC, c'est pas avec ce code que tu vas y parvenir.Pour se connecter sur un serveur IRC, il faut d'abord envoyer les chaînes comme :

USER Volcom U U : Cé moua
NICK Volcom

Puis ensuite, lorsque la connection est établie, il faut une chaîne
PONG qui réponde au serveur à chaque PING reçu.

Par exemple pour Wanadoo Algérie :
PING :chat.wanadoo.dz
PONG :chat.wanadoo.dz

Et si tu ne reçois que caractère par caractère dans le buffer,
concatène tout ça dans un fichier log qui sera lu puis associé à
une variable CHAR.

En effet, hmm t'as raison, je viens de me connecter sur Quakenet avec un addon mIRC sur socket 6667 et ça foire, bien que j'ai envoyé USER et NICK :

Connection établie avec irc.quakenet.org sur le port 6667
NOTICE AUTH :*** Looking up your hostname
NOTICE AUTH :*** Checking Ident
NOTICE AUTH :*** No ident response
NOTICE AUTH :*** Found your hostname
:euroserv.fr.quakenet.org 431 * :No nickname given
PING :167522925
:euroserv.fr.quakenet.org 513 Serial-Killer :Your client may not be compatible with this server.
:euroserv.fr.quakenet.org 513 Serial-Killer :Compatible clients are available at ftp://ftp.undernet.org/pub/irc/clients
ERROR :Closing Link: Serial-Killer by euroserv.fr.quakenet.org (Ping timeout)
Fermeture IRCTELNET sur irc.quakenet.org sur le port 6667

Je pense que le serveur déconne.Essaye un autre serveur.
Je vais voir ce que je peux faire pour Quakenet...

signaler à un administrateur
Commentaire de Sverdlovsky le 16/01/2003 20:46:32

Connection établie avec euroserv.fr.quakenet.org sur le port 6667
NOTICE AUTH :*** Looking up your hostname
NOTICE AUTH :*** Checking Ident
NOTICE AUTH :*** Found your hostname
NOTICE AUTH :*** No ident response
:euroserv.fr.quakenet.org 431 * :No nickname given
PING :1772914104
list
:euroserv.fr.quakenet.org 451 * Cappucini :Register first.
join #usa
:euroserv.fr.quakenet.org 451 * Cappucini :Register first.
:euroserv.fr.quakenet.org 513 Cappucini :Your client may not be compatible with this server.
:euroserv.fr.quakenet.org 513 Cappucini :Compatible clients are available at ftp://ftp.undernet.org/pub/irc/clients
ERROR :Closing Link: Cappucini by euroserv.fr.quakenet.org (Ping timeout)
Fermeture IRCTELNET sur euroserv.fr.quakenet.org sur le port 6667


Là je pense qu'il faut faire un register comme sur Dalnet...

signaler à un administrateur
Commentaire de obergist le 18/01/2003 20:55:21

Salut les gars...
je cherche à réaliser un client qui envoie des chaines de caractères en c++.. est ce que quelqu'un aurait ca sous la main??

signaler à un administrateur
Commentaire de Sverdlovsky le 18/01/2003 21:51:47

Obergist, tu as ci-dessus l'exemple flagrant d'un client qui envoie les chaînes de caractères en C++.

send() pour l'envoi, recv() pour la réception.

Mon code marche sous Dev C++ version 4.

Post scriptum : va chez l'ophtalmo, ha ha ha...

signaler à un administrateur
Commentaire de Suisse00 le 02/11/2003 01:13:59

J'ai un prob moi quand je met le -lwsock32 il y a une fenêtre g++ qui aparait avec comme erreur

g++: -lwsock32: linker input file unused since linking not done

signaler à un administrateur
Commentaire de NepiTheGod le 11/02/2004 18:41:52

Moi g la derniere version de dev c++ et ca marche nickel.
Je connais pas mal de truc sur opengl si ca t'interesse.

signaler à un administrateur
Commentaire de patoudesuite le 04/06/2004 14:56:05

Et si tu dois passer des paramètres pour une recherche sur yahoo, ...

Comment ferais tu?

signaler à un administrateur
Commentaire de masive crash le 03/07/2004 07:49:03

sa ne marche pas il ya pas derreur mais il ya 0 de "size of output file "
par consequan  sa ne marche pas

quelqun peuv t il mexpliker ce qui se passe !!!

signaler à un administrateur
Commentaire de masive crash le 03/07/2004 07:52:20

sa ne marche pas il ya pas derreur mais il ya 0 de "size of output file "
par consequan  sa ne marche pas

quelqun peuv t il mexpliker ce qui se passe !!!

signaler à un administrateur
Commentaire de WipedOUT le 10/12/2004 20:10:48

Salut les gars bon alors moi je programme bocoup en Windev je connait assez bien ensuite je code un peu en PHP en VB et en ASM ossi pour ceu ki me croyent pa ben jmen fous lol mais je me susi mit o C ya pa tres longtemp avec Dev c++ et donc avec les base ke j'ai jme debrouille pas mal pour les truc du genre boucle et tout et tout ( G coder un bruteforcer pour un pass ) mais mainteant j'aimerai m'interesser o socket et la ca ne marche pa pourtant g la meme vers de Dev ++ ke vous la 4 et g rajouter la comande ke vous avez marker mais rien a faire mais j'aimerai savoir un truc kan o debut on cree un projet il fo choisiur koi dans la boite de dial console,Window prgm,WinMain [C /C++ ] si vous pouviez me dire les potn a cocher ca serai sympas
merci les gras a++

signaler à un administrateur
Commentaire de victorcoasne le 05/05/2005 08:23:54

Tu ose mettre des pragma avec dev-c++ ?

signaler à un administrateur
Commentaire de magus54 le 19/04/2006 11:18:02

g++.exe -c main.cpp -o main.o -I"C:/Dev-Cpp/include/c++/3.3.1"  -I"C:/Dev-Cpp/include/c++/3.3.1/mingw32"  -I"C:/Dev-Cpp/include/c++/3.3.1/backward"  -I"C:/Dev-Cpp/lib/gcc-lib/mingw32/3.3.1/include"  -I"C:/Dev-Cpp/include"

In file included from C:/Dev-Cpp/include/c++/3.3.1/backward/fstream.h:31,
                 from main.cpp:1:
C:/Dev-Cpp/include/c++/3.3.1/backward/backward_warning.h:32:2: warning: #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <sstream> instead of the deprecated header <strstream.h>. To disable this warning use -Wno-deprecated.
main.cpp:6: error: `main' must return `int'

main.cpp: In function `int main(...)':
main.cpp:31: error: `endl' undeclared (first use this function)
main.cpp:31: error: (Each undeclared identifier is reported only once for each
   function it appears in.)

make.exe: *** [main.o] Error 1

Exécution terminée

On peut m'aider ? :p Je cale rien

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,468 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.