begin process at 2012 05 30 17:27:03
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

[SOCKET]Tjrs le pb de recuperation du buffer recv()


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

[SOCKET]Tjrs le pb de recuperation du buffer recv()

samedi 23 août 2003 à 19:30:35 | [SOCKET]Tjrs le pb de recuperation du buffer recv()

enthaz

Allez J me lance : ca fait des heures et des heures ke le newb ke je suischerche la solution :
D un coté j ai un logiciel client ki envoie "coucou" sur le port d une machine sur un port determiné.
D un autre coté un serveur qui ecoute sur le mm port en tente ( desesperement d afficher ce k il recoit.
Or il affiche n importe koi ac en plus -1 pr le resultat de recv().
Je c ke ce prob en revenu svt sur le forum mais apres des recherches je n ai pas trouV de solutions convaincante. Votre solution servira dc d autres codeurs. Merci d avance pr vos reponses, je vs donne les codes sources :

---------------------------------------------------------------------- Partie serveur
----------------------------------------------------------------------

#include "stdafx.h"
#include <stdlib.h>
#include <iostream.h>
#include <winsock2.h>

#pragma comment(lib, "ws2_32.lib")


int main(int argc, char* argv[])
{



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


char buffer[64]; /* le buffer */

sock = socket(AF_INET, SOCK_STREAM, 0); /* le sock */
sin.sin_addr.s_addr= INADDR_ANY;
sin.sin_family= AF_INET;
sin.sin_port= htons(1105);
if(bind(sock, (SOCKADDR *)&sin, sizeof(sin)) == -1)

{
cout<<"erreur du bind"; /* erreur */
}
if(listen(sock, 0) == -1)
{
cout<<"erreur du listen"; /* erreur */
}

int sinsize = sizeof(sin);


if(accept(sock, (SOCKADDR *)&sin, &sinsize) == -1)
{
cout << "erreur du accept";
}
int fd;
fd = recv(sock, buffer, sizeof(buffer), 0); /* dc la je recoit*/


cout<<"\n"<<buffer<<"\n"; /* et la j affiche*/
cout<<fd<<"\n";


return 0;
}


---------------------------------------------------------------------
Parite Client
---------------------------------------------------------------------

#include "stdafx.h"
#include <iostream.h>
#include <winsock2.h>

#pragma comment(lib, "ws2_32.lib")


int main(int argc, char* argv[])
{


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


/* Tout est configuré pour se connecter sur IRC, haarlem, Undernet. */
sock = socket(AF_INET, SOCK_STREAM, 0);
sin.sin_addr.s_addr= inet_addr("IP à modifier");
sin.sin_family= AF_INET;
sin.sin_port= htons(1105);
if(connect(sock, (SOCKADDR *)&sin, sizeof(sin)) == -1)
{
cout << "erreur du connect "; /* erreur */
}
if(send(sock, "coucou", 6, 0) == -1) /* on envoie */
{
cout << "erreur du send"; /* erreur */
}

closesocket(sock);
WSACleanup(); /* on ferme tt ca */

int i;
cin>>i; /* pr avoir le tps de lire les erreurs */

return 0;
}

---------------------------------------------------------------------

Bon ben voila
Merci pr votre aide.
A bientot !
dimanche 24 août 2003 à 00:11:43 | Re : [SOCKET]Tjrs le pb de recuperation du buffer recv()

Anacr0x

G vraiment pas le temps de regardé le code en détail la mais sincerement, au lieu de te faire ***** a crée ca, je te conseille de regardé la source http://www.cppfrance.com/article.aspx?ID=1875, tu vera, c bien fait, largement suffisant ds la plupart des cas et assez pratique (^_^)
-------------------------------
Réponse au message :
-------------------------------

> Allez J me lance : ca fait des heures et des heures ke le newb ke je suischerche la solution :
> D un coté j ai un logiciel client ki envoie "coucou" sur le port d une machine sur un port determiné.
> D un autre coté un serveur qui ecoute sur le mm port en tente ( desesperement d afficher ce k il recoit.
> Or il affiche n importe koi ac en plus -1 pr le resultat de recv().
> Je c ke ce prob en revenu svt sur le forum mais apres des recherches je n ai pas trouV de solutions convaincante. Votre solution servira dc d autres codeurs. Merci d avance pr vos reponses, je vs donne les codes sources :
>
> ---------------------------------------------------------------------- Partie serveur
> ----------------------------------------------------------------------
>
> #include "stdafx.h"
> #include <stdlib.h>
> #include <iostream.h>
> #include <winsock2.h>
>
> #pragma comment(lib, "ws2_32.lib")
>
>
> int main(int argc, char* argv[])
> {
>
>
>
> WSADATA WSAData;
> WSAStartup(MAKEWORD(2,0), &WSAData);
> SOCKET sock;
> SOCKADDR_IN sin;
>
>
> char buffer[64]; /* le buffer */
>
> sock = socket(AF_INET, SOCK_STREAM, 0); /* le sock */
> sin.sin_addr.s_addr= INADDR_ANY;
> sin.sin_family= AF_INET;
> sin.sin_port= htons(1105);
> if(bind(sock, (SOCKADDR *)&sin, sizeof(sin)) == -1)
>
> {
> cout<<"erreur du bind"; /* erreur */
> }
> if(listen(sock, 0) == -1)
> {
> cout<<"erreur du listen"; /* erreur */
> }
>
> int sinsize = sizeof(sin);
>
>
> if(accept(sock, (SOCKADDR *)&sin, &sinsize) == -1)
> {
> cout << "erreur du accept";
> }
> int fd;
> fd = recv(sock, buffer, sizeof(buffer), 0); /* dc la je recoit*/
>
>
> cout<<"\n"<<buffer<<"\n"; /* et la j affiche*/
> cout<<fd<<"\n";
>
>
> return 0;
> }
>
>
> ---------------------------------------------------------------------
> Parite Client
> ---------------------------------------------------------------------
>
> #include "stdafx.h"
> #include <iostream.h>
> #include <winsock2.h>
>
> #pragma comment(lib, "ws2_32.lib")
>
>
> int main(int argc, char* argv[])
> {
>
>
> WSADATA WSAData;
> WSAStartup(MAKEWORD(2,0), &WSAData);
> SOCKET sock;
> SOCKADDR_IN sin;
>
>
> /* Tout est configuré pour se connecter sur IRC, haarlem, Undernet. */
> sock = socket(AF_INET, SOCK_STREAM, 0);
> sin.sin_addr.s_addr= inet_addr("IP à modifier");
> sin.sin_family= AF_INET;
> sin.sin_port= htons(1105);
> if(connect(sock, (SOCKADDR *)&sin, sizeof(sin)) == -1)
> {
> cout << "erreur du connect "; /* erreur */
> }
> if(send(sock, "coucou", 6, 0) == -1) /* on envoie */
> {
> cout << "erreur du send"; /* erreur */
> }
>
> closesocket(sock);
> WSACleanup(); /* on ferme tt ca */
>
> int i;
> cin>>i; /* pr avoir le tps de lire les erreurs */
>
> return 0;
> }
>
> ---------------------------------------------------------------------
>
> Bon ben voila
> Merci pr votre aide.
> A bientot !
>
dimanche 24 août 2003 à 00:33:30 | Re : [SOCKET]Tjrs le pb de recuperation du buffer recv()

enthaz


Oups j ai oublié de preciser que je suis sur windows alors je c pas l article ke tu m as dit est pr linux je v voir ...

Enthaz


dimanche 24 août 2003 à 14:14:06 | Re : [SOCKET]Tjrs le pb de recuperation du buffer recv()

Anacr0x

Pour linux ? On parle bien de la meme source la ?
Tu n'as qu'as inclure bubsock.h ds ton projet et ensuite ta déja dé exemple, de plus, ca marche très bien sous windows, g déja testé...

-------------------------------
Réponse au message :
-------------------------------

>
> Oups j ai oublié de preciser que je suis sur windows alors je c pas l article ke tu m as dit est pr linux je v voir ...
>
> Enthaz
>
>
>
dimanche 24 août 2003 à 14:16:19 | Re : [SOCKET]Tjrs le pb de recuperation du buffer recv()

Anacr0x

euh en fait, fo pas cliké sur mon lien, il é foireux... va simplement sur http://www.cppfrance.com/article.aspx?ID=1875
-------------------------------
Réponse au message :
-------------------------------

> Pour linux ? On parle bien de la meme source la ?
> Tu n'as qu'as inclure bubsock.h ds ton projet et ensuite ta déja dé exemple, de plus, ca marche très bien sous windows, g déja testé...
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> >
> > Oups j ai oublié de preciser que je suis sur windows alors je c pas l article ke tu m as dit est pr linux je v voir ...
> >
> > Enthaz
> >
> >
> >
>
dimanche 24 août 2003 à 15:01:36 | Re : [SOCKET]Tjrs le pb de recuperation du buffer recv()

enthaz


MERCI !!!!!!!!!!!!
Ca m a vraiment aidé les sockets sont bien plus facile maintenan.
merci
dimanche 24 août 2003 à 15:04:46 | Re : [SOCKET]Tjrs le pb de recuperation du buffer recv()

Anacr0x

de rien, moi aussi g un peu galéré avec ca au début (^_^)

-------------------------------
Réponse au message :
-------------------------------

>
> MERCI !!!!!!!!!!!!
> Ca m a vraiment aidé les sockets sont bien plus facile maintenan.
> merci
dimanche 24 août 2003 à 15:41:46 | Re : [SOCKET]Tjrs le pb de recuperation du buffer recv()

aardman

Membre Club
Salut,
Tu ne peut pas recevoir des infos a partir d'un socket qui ecoute.
Dans ton serveur en haut tu met SOCKET sclient;
et quand tu accepte la connexion tu met sclient = accept(sock, (SOCKADDR *)&sin, &sinsize)

Et tu appelles recv(...) avec sclient.
Et ca marche.


-------------------------------
Réponse au message :
-------------------------------

> Allez J me lance : ca fait des heures et des heures ke le newb ke je suischerche la solution :
> D un coté j ai un logiciel client ki envoie "coucou" sur le port d une machine sur un port determiné.
> D un autre coté un serveur qui ecoute sur le mm port en tente ( desesperement d afficher ce k il recoit.
> Or il affiche n importe koi ac en plus -1 pr le resultat de recv().
> Je c ke ce prob en revenu svt sur le forum mais apres des recherches je n ai pas trouV de solutions convaincante. Votre solution servira dc d autres codeurs. Merci d avance pr vos reponses, je vs donne les codes sources :
>
> ---------------------------------------------------------------------- Partie serveur
> ----------------------------------------------------------------------
>
> #include "stdafx.h"
> #include <stdlib.h>
> #include <iostream.h>
> #include <winsock2.h>
>
> #pragma comment(lib, "ws2_32.lib")
>
>
> int main(int argc, char* argv[])
> {
>
>
>
> WSADATA WSAData;
> WSAStartup(MAKEWORD(2,0), &WSAData);
> SOCKET sock;
> SOCKADDR_IN sin;
>
>
> char buffer[64]; /* le buffer */
>
> sock = socket(AF_INET, SOCK_STREAM, 0); /* le sock */
> sin.sin_addr.s_addr= INADDR_ANY;
> sin.sin_family= AF_INET;
> sin.sin_port= htons(1105);
> if(bind(sock, (SOCKADDR *)&sin, sizeof(sin)) == -1)
>
> {
> cout<<"erreur du bind"; /* erreur */
> }
> if(listen(sock, 0) == -1)
> {
> cout<<"erreur du listen"; /* erreur */
> }
>
> int sinsize = sizeof(sin);
>
>
> if(accept(sock, (SOCKADDR *)&sin, &sinsize) == -1)
> {
> cout << "erreur du accept";
> }
> int fd;
> fd = recv(sock, buffer, sizeof(buffer), 0); /* dc la je recoit*/
>
>
> cout<<"\n"<<buffer<<"\n"; /* et la j affiche*/
> cout<<fd<<"\n";
>
>
> return 0;
> }
>
>
> ---------------------------------------------------------------------
> Parite Client
> ---------------------------------------------------------------------
>
> #include "stdafx.h"
> #include <iostream.h>
> #include <winsock2.h>
>
> #pragma comment(lib, "ws2_32.lib")
>
>
> int main(int argc, char* argv[])
> {
>
>
> WSADATA WSAData;
> WSAStartup(MAKEWORD(2,0), &WSAData);
> SOCKET sock;
> SOCKADDR_IN sin;
>
>
> /* Tout est configuré pour se connecter sur IRC, haarlem, Undernet. */
> sock = socket(AF_INET, SOCK_STREAM, 0);
> sin.sin_addr.s_addr= inet_addr("IP à modifier");
> sin.sin_family= AF_INET;
> sin.sin_port= htons(1105);
> if(connect(sock, (SOCKADDR *)&sin, sizeof(sin)) == -1)
> {
> cout << "erreur du connect "; /* erreur */
> }
> if(send(sock, "coucou", 6, 0) == -1) /* on envoie */
> {
> cout << "erreur du send"; /* erreur */
> }
>
> closesocket(sock);
> WSACleanup(); /* on ferme tt ca */
>
> int i;
> cin>>i; /* pr avoir le tps de lire les erreurs */
>
> return 0;
> }
>
> ---------------------------------------------------------------------
>
> Bon ben voila
> Merci pr votre aide.
> A bientot !
>
lundi 25 août 2003 à 21:37:26 | Re : [SOCKET]Tjrs le pb de recuperation du buffer recv()

enthaz


Est ce qu il faut mettre ca ds le serveur et ds le client ou juste le serveur?Et est ce qu il fo definir un SOCKADDR_IN pr le socket ke tu m a dit de rajouter? Merci bcp
lundi 25 août 2003 à 21:50:08 | Re : [SOCKET]Tjrs le pb de recuperation du buffer recv()

aardman

Membre Club
Salut,
Ben puisque c'est la ligne avec accept(..) qui merde, c'est forcément dans le serveur.
accept(...) retourne un socket handle, ce nouveau socket handle identifie la connexion acec le client qui vient de se connecter. L'ancien socket lui, continue a ecouter sur le port donné.



-------------------------------
Réponse au message :
-------------------------------

>
> Est ce qu il faut mettre ca ds le serveur et ds le client ou juste le serveur?Et est ce qu il fo definir un SOCKADDR_IN pr le socket ke tu m a dit de rajouter? Merci bcp

1 2 3

Cette discussion est classée dans : port, socket, sin, sock, wsadata


Répondre à ce message

Sujets en rapport avec ce message

Socket, quand tu nous tiens ... [ par enthaz ] Allez J me lance : ca fait des heures et des heures ke le newb ke je suischerche la solution :D un coté j ai un logiciel client ki envoie "coucou" sur PROB SOCKETS CON [ par zzzzzz ] le code source marche mais quand je rajoute un cout#include #pragma comment(lib,"ws2_32.lib")#include int main(void) utilisation basique de winsock [ par Spiffou ] bonjour à tousj'essaie d'apprendre winsock en vc++ mode console pour le moment, et j'ai qlq difficultés...en gros j'etabli bien une connection entre l Liaison client/serveur (socket) [ par bthivent ] Bonjour !J'ai suivi un tutorial pour apprendre les sockets. J'ai ensuite essaiyé un exemple qu'ils proposaient, voici mon code qui permet de faire un [C] Scanner de port utilise socket version linux [ par firemax ] Salut :) J'ai une erreur de segmentation et je n'est pas la moindre idée d'ou ca peut venir :( Je n'est aucun warning lors de la compilation mais l winsock 2 listen [ par lektrosonic ] Bonjour, ceci est mon bou de code, je veu mette le socket en mode listen, mais de ke je le fait, ca plante...ce bout de code est sous win32 et la fene probleme de send en C avec socket [ par thorn74 ] bonjour je suis actuellement en IUT info et G un  projet a faire mais je bloque je doit fair eun petit programme ou lorsqu'un ordinateur se connecte a les socket [ par ben83510 ] Bonjour, Je me suis lancer dans le tutoriel sur les socket. J arrive a effectuer la connexion lorsque j execute le serveur et le client sur mon pc.Ma erreur bind: Address already in use [ par andoid ] Bonjour j'ai mon programme suivant qui marche et je suis en route pour creer mon serveur pour l'instant le client qui se connecte je lui envoi juste l communication serveur c et client java [ par andoid ] Bonjour Je voulais savoir commment on peut faire communiquer un serveur C et un cleint java avec les sockets voici juste un petit serveur qui dit bonj


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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 : 4,430 sec (3)

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