Problème de write sur un socket
Bonsoir,
J'ai un souci avec mon code d'un petit serveur en C que je suis en train de developpez. En effet, je peux sans problème faire des read, mais les write échoue et perror me dit "Bad Address". Je pense que cela vien de ma façon de créer les structures utilisée dans le accept, mais je vois pas comment faire.
Voici le code que j'utilise.
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
| void *serveur(void *arg){
int pnum;
int sock;
int nouvelle;
sock = socket (AF_INET,SOCK_STREAM , 0);
if (sock < 0) {
perror ("socket");
exit (1);
}
struct sockaddr_in mon_adresse;
mon_adresse.sin_port = htons(30000);
mon_adresse.sin_family = AF_INET;
mon_adresse.sin_addr.s_addr = htonl(INADDR_ANY);
if (bind (sock, (struct sockaddr*)&mon_adresse, sizeof(mon_adresse)) < 0) {
perror ("bind");
exit (1);
}
if (listen (sock, 5) < 0) {
perror ("listen");
exit (1);
}
while (1) {
struct sockaddr_in adresse_client;
socklen_t lg_adresse_client = sizeof(adresse_client);
nouvelle = accept (sock, (struct sockaddr*)&adresse_client,&lg_adresse_client);
printf("sin_family : %d\nsin_port : %d\nsin addr : %d\n", adresse_client.sin_family, ntohs(adresse_client.sin_port), adresse_client.sin_addr.s_addr);
if (nouvelle < 0) {
perror ("erreur lors de accept");
exit (1);
}
int i = write(nouvelle, 'O', sizeof(char));
printf("écrit : %d; fd : %d\n", i, nouvelle);
perror("erreur de write");
// printf("création d'un thread pour le client\n");
// pthread_t client_t;
// pthread_create(&client_t, NULL, traiter_client, client_socket);
}
} |
Merci par avance !