socket : envois des données impossible
Bonjour,
Décidement les sockets ça ne réussit pas à tout le monde !
Je tente de créer un programme (client/serveur) de chat très basique juste pour me familiariser avec les sockets sous windows.
Mon code se compile sans erreur mais je ne parvient pas à envoyer de données. Voici mon code source :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
|
#include <stdio.h>
#include <winsock2.h>
#include <string.h>
main(void)
{
WSADATA WSAData; // Initialisation des variables
int start_wsa;
int serveur_socket, client_socket;
struct sockaddr_in ip_serveur, ip_client;
int port = 1000;
int ip_serveur_size;
int envoyer, recevoir;
char *message;
char buffer[512];
int rec;
start_wsa = 1;
if((start_wsa = WSAStartup(MAKEWORD(2,0), &WSAData)) != 0) {
printf("Erreur : Initialisation de winsock impossible \n");
return 0; }
memset(&ip_serveur, 0, sizeof(ip_serveur));
ip_serveur.sin_addr.s_addr = htons(INADDR_ANY);
ip_serveur.sin_family = AF_INET;
ip_serveur.sin_port = htons(port);
if((serveur_socket = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET){
printf("Erreur : Création de la socket impossible \n");
return 0;
}
bind(serveur_socket, (struct sockaddr *)&ip_serveur, sizeof(ip_serveur));
listen(serveur_socket, 0);
ip_serveur_size = sizeof(ip_client);
if((client_socket = accept(serveur_socket,
(struct sockaddr *)&ip_client,
&ip_serveur_size)) == -1) {
printf("Erreur : Connexion avec le client impossible\n");
return 0;
}
printf("Connecte a l'hote\n");
printf("Tapez votre message\n\n");
do
{
scanf("%s", buffer);
if ((envoyer = write(client_socket,buffer, 512)) == -1) {
printf("Erreur : Envoi de \"%s\" impossible", buffer);
return 0;
}
if ((recevoir = read(client_socket,buffer, 512)) == -1) {
printf("Erreur : Reception des donnees impossible");
return 0;
}
printf("Client : %s\n", buffer);
}
while (start_wsa > 0);
return 0;
} |
Mon programme n'est pas terminé, je souhaitais juste le tester avant de passer aux finitions.
Je précise que j'utilise "netcat" pour le tester n'aillant pas encore coder le client.
Merci d'avance !