Socket, quand tu nous tiens ...

enthaz Messages postés 13 Date d'inscription samedi 26 juillet 2003 Statut Membre Dernière intervention 27 août 2003 - 23 août 2003 à 23:51
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 - 24 août 2003 à 15:43
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
#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"<
#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 !

1 réponse

cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
24 août 2003 à 15:43
Salut,
L'erreur est au niveau du accept(...)
Regarde ma reponse dans l'autre discution j'explique le prob.
0
Rejoignez-nous