begin process at 2012 02 10 20:12:45
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Réseau / Internet

 > 

socket winsock grrr


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

socket winsock grrr

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

petitchech

eu comment sa ?
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ée 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...

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 : 0,546 sec (3)

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