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 !

Sujet : socket winsock grrr [ Archives / Réseau / Internet ] (dekai)

dimanche 7 mars 2004 à 06:09:58 | socket winsock grrr

dekai


Voilà mon pb lorsque je tente un send ou recv j'obtient une erreur et ej comprends pas pourquoi. Merci de m'aider.

Voici le code (je travaille sous dev-c++ 4.9.8.0) :


#include <winsock.h>
#include <stdio.h>

//global variable
int Socket;
//end global variable

void initialize_socket(int port)
{
//variables
WSADATA data;
struct sockaddr_in name;
int name_lenght = sizeof (name);
//end variables

//initialize winsock
if (WSAStartup(MAKEWORD(1,1), &data) != 0)
printf ("Impossible d'initialiser Winsock.\n\n");
else printf("Winsock initialisé avec succès.\n\n");
//end initialize winsock

//create socket
Socket = socket (AF_INET, SOCK_STREAM, 0);
if (Socket == INVALID_SOCKET)
printf("Erreur lors de la création de la socket : erreur %d.\n\n", WSAGetLastError());
else printf ("Socket créée avec succès.\n\n");
//end create socket

//bind socket
name.sin_family = AF_INET;
name.sin_port = htons (port);
name.sin_addr.S_un.S_addr = htonl (INADDR_ANY);
if (bind (Socket, (struct sockaddr *) &name, sizeof (name)) == SOCKET_ERROR)
printf("Erreur lors du bind de la socket : erreur %d.\n\n", WSAGetLastError());
else printf("Bind de la socket réalisé avec succès.\n\n");
//end bind socket

//socket in listen mode
if (listen (Socket, SOMAXCONN) == SOCKET_ERROR)
printf("Impossible de mettre la socket en mode écoute : erreur %d.\n\n", WSAGetLastError());
else printf ("Socket en mode écoute.\n\n");
//end socket in listen mode

//socket accept incoming connection
if (accept (Socket, (struct sockaddr *) &name, &name_lenght) == INVALID_SOCKET)
printf("Connexion cliente refusée : erreur %d.\n\n", WSAGetLastError());
else printf ("Connexion cliente acceptée.\n\n");
//end socket accept incoming connection
}

void receive_data_from_a_connected_socket(char *buffer)
{
if (recv (Socket, buffer, strlen(buffer), 0) == SOCKET_ERROR)
printf("Impossible de recevoir depuis le client : erreur %d.\n\n", WSAGetLastError());
else printf ("Reception à partir du client ok.\n\n");
}

void send_data_on_a_connected_socket(char *buffer)
{
if (send (Socket, buffer, strlen(buffer), 0) == SOCKET_ERROR)
printf ("Erreur d'envoi vers le client : erreur %d.\n\n", WSAGetLastError());
else printf ("Envoi vers le client ok.\n\n");
}

int main()
{
char buffer[1024];
char welcome [] = "coucou c'est moi";
initialize_socket(25);
send_data_on_a_connected_socket(welcome);
receive_data_from_a_connected_socket(buffer);
system("PAUSE");
}


Ne pas oublier -lwsock32 lors de l'appel du compilateur (cf option du compilateur).

dimanche 7 mars 2004 à 10:22:59 | Re : socket winsock grrr

petitchech

Salut,

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


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

//global variable

SOCKET Socket;
SOCKET SocketClient;

//end global variable

void initialize_socket(int port)
{
//variables
WSADATA data;
struct sockaddr_in name;
int name_lenght = sizeof (name);
//end variables

//initialize winsock
if (WSAStartup(MAKEWORD(2,0), &data) != 0)
printf ("Impossible d'initialiser Winsock.\n\n");
else
printf("Winsock initialisé avec succès.\n\n");
//end initialize winsock

//create socket
Socket = socket (AF_INET, SOCK_STREAM, 0);
if (Socket == INVALID_SOCKET)
printf("Erreur lors de la création de la socket : erreur %d.\n\n", WSAGetLastError());
else
printf ("Socket créée avec succès.\n\n");
//end create socket

//bind socket
name.sin_family = AF_INET;
name.sin_port = htons (port);
name.sin_addr.s_addr=INADDR_ANY;
if (bind (Socket, (struct sockaddr *) &name, sizeof (name)) == SOCKET_ERROR)
printf("Erreur lors du bind de la socket : erreur %d.\n\n", WSAGetLastError());
else
printf("Bind de la socket réalisé avec succès.\n\n");
//end bind socket

//socket in listen mode
if (listen (Socket, SOMAXCONN) == SOCKET_ERROR)
printf("Impossible de mettre la socket en mode écoute : erreur %d.\n\n", WSAGetLastError());
else
printf ("Socket en mode écoute.\n\n");
//end socket in listen mode

//socket accept incoming connection
if ((SocketClient = accept (Socket, (struct sockaddr *) &name, &name_lenght)) == INVALID_SOCKET)
printf("Connexion cliente refusée : erreur %d.\n\n", WSAGetLastError());
else
printf ("Connexion cliente acceptée.\n\n");
//end socket accept incoming connection
}

void receive_data_from_a_connected_socket(char *buffer)
{
if (recv (SocketClient, buffer, sizeof(buffer), 0) == SOCKET_ERROR)
printf("Impossible de recevoir depuis le client : erreur %d.\n\n", WSAGetLastError());
else
printf ("Reception à partir du client ok.(%s)\n\n",buffer);
}

void send_data_on_a_connected_socket(char *buffer)
{
if (send(SocketClient, buffer, strlen(buffer), 0) == SOCKET_ERROR)
printf ("Erreur d'envoi vers le client : erreur %d.\n\n", WSAGetLastError());
else
printf ("Envoi vers le client ok.\n\n",buffer,SocketClient);
}

int main()
{
char buffer[1024];
char welcome [] = "coucou c'est moi\r\n";
initialize_socket(6667);
send_data_on_a_connected_socket(welcome);
memset(buffer,0,sizeof(buffer));
receive_data_from_a_connected_socket(buffer);
system("PAUSE");
return 0;
}

dimanche 7 mars 2004 à 21:37:00 | Re : socket winsock grrr

dekai


Super merci bien.

lundi 8 mars 2004 à 03:12:49 | Re : socket winsock grrr
lundi 8 mars 2004 à 03:14:35 | Re : socket winsock grrr

dekai


Ah non encore un pb je comprends pas pourquoi lorsque j'execute la fonction receive_data_from_a_connected_socket la socket se ferme après avoir récupérer un seul caractère alors que la taille du buffer est de 1024 ?!?

lundi 8 mars 2004 à 12:25:00 | Re : socket winsock grrr

petitchech


Ta essayer avec telnet ?
si oui c telnet il envoi des un caractere des ke tu prece une touche.

lundi 8 mars 2004 à 17:59:49 | Re : socket winsock grrr

dekai


Ouais exact j'ai essayer avec telnet donc tu penses que c'est lui le pb ? Bon ben je vais coder un petit client alors. Merci pour ton aide.

jeudi 26 mai 2005 à 23:12:28 | Re : socket winsock grrr

petitedouceur

petichech>> C'est pas chaud de jouer avec des variables globales?   

vendredi 27 mai 2005 à 13:15:24 | Re : socket winsock grrr
mardi 11 avril 2006 à 11:19:22 | Re : socket winsock grrr

reistlein


super programme mais quand tu envoies tu n'envoie que 4 caractère car
send(SocketClient, buffer, sizeof(buffer), 0)
au lieu de
send(SocketClient, buffer, sizeof(char)* strlen(buffer), 0)
pour recevoir
c'est
recev(SocketClient, buffer, sizeof(char)*1024, 0)

je ne suis pas un pro en c++ si je me suis planter dite le moi.
aller @+



1 2

Cette discussion est classé dans : buffer, erreur, printf, socket, name


Répondre à ce message

Sujets en rapport avec ce message

Envois et reception de commande [ par t0Xic_h ] SalutVoici mon code source .La connection entre le client et le serveur se passe bien, mais je n'ai pas su ecrirele code qui me permettera d'envoyer l erreur 10038 [ par made_in_france ] Hello ! j'ai un probleme avec la fonction bind de mon programme. En effet cette fonction me renvois l'erreur 10038 « attempted ». Est ce que quelqu'un protocole TCP HELP me [ par lolobardon ] Bonjour à tous,je suis actuellement à Pékin pour effectuer un semestre d'études. Je suis élève ingénieur en électronique mais l'embêtant c'est qu'ici Buffer overflow [ par tomk_41 ] Voila maintenant plusieurs jour que je flanche sur un problème. Dans le cadre d'un cours de sécurité informatique, je dois réussir à faire afficher "B UpdateResource() ICON [ par maladedede ] BonjourJ'ai deja utiliser plusoeur fois Update resource pour changer des resources du type RCDATA d'un ".exe"Et la c'est la resourc ICON du ".exe" que ReadFile et port USB [ par je_ne_viens_qu1_fois ] Bonjour à tousJ'aurai besoin d'une aide en toute urgence concernant le dialogue avec un microcontroller via le port USB.J'ai résussi à faire le "Creat Winsock2 WASEvents... [ par fraboulet ] Bonjour à tous,J'ai une question concernant winsock2, je souhaite faire un thread d'écoute de sockets. Mais je souhaite pouvoir ajouter dynamiquement Bind socket erreur [ par Taron31 ] Bonjour, en codant avec les socket j'ai une erreur avec le bind, pourtant je ne décèle pas d'erreur au niveau du code, apparement c'est un pb techniqu Probleme entre DLL et socket [ par XKaliBur ] Le probleme est que je réalise un hook sur mon clavier et que chaque frappe interceptée je veux l'envoyer via un socket à un serveur, mais des que j'e chat client server [ par electroonn ] Bonjour, j'essaye de developper avec c++ une application de chat (client-server) sous windows, en voici le code:Server server; Client client; void m


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

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