begin process at 2012 02 08 22:58:34
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Réseaux & Internet

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

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


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
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 :23 522

Auteur : Sverdlovsky

Ecrire un message privé
Site perso
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.


 Sources du même auteur

NOMBRES DE FIBONACCI (TRÈS GRANDS ENTIERS)

 Sources de la même categorie

Source avec Zip SERVEUR MULTITHREAD [LINUX/WIN] par nipepsinicolas
Source avec Zip Source avec une capture SECURE REMOTE SHELL [WIN32] par ganjarasta
Source avec Zip Source avec une capture SUIVI DE PRODUCTION ONDULEUR PHOTOVOLTAÏQUE SOLARMAX par brunovan
Source avec Zip MINICHAT MULTI-CLIENT par wisar
SOCKET CPP par baptchr55

Commentaires et avis

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.
----------------

Commentaire de mmuller57 le 12/10/2002 17:52:15

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

Commentaire de Sverdlovsky le 15/10/2002 16:37:31

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

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 !

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 ... :)

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...

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...

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??

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...

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

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.

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?

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 !!!

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 !!!

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++

Commentaire de victorcoasne le 05/05/2005 08:23:54

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

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...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,232 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales