karlieff
Messages postés3Date d'inscriptionlundi 22 mars 2004StatutMembreDernière intervention26 mars 2004
-
25 mars 2004 à 13:23
karlieff
Messages postés3Date d'inscriptionlundi 22 mars 2004StatutMembreDernière intervention26 mars 2004
-
26 mars 2004 à 16:49
Bonjour j'ai un petit probleme sur un thread, je crée une appli fonctionnant sous windows et sous linux qui doit grace a des threads permettre l'envoi de l'heure chaque seconde. Sur windows ca marche mais sur linux ma routine se termine a la fin du premier thread. Voici mon code et merci d'avance.
P.S : je débute donc soyez clément ;).
////////////////////////////////serveur///////////////////////////
// on teste ici l'OS et on definit les variables "WINDOWS" ou "LINUX" en fonction du resultat
#ifdef _MSC_VER
#define WINDOWS
#else
#define LINUX
#endif
#include <sys/types.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
#include <errno.h>
// les includes different selon l'OS
#ifdef LINUX
#include <sys/un.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include /* close */
#include <netdb.h>
#include
#include
#endif
//on lie le port du serveur au socket en remplissant la "internet socket adresse structure" et en appellant bind
servaddr.sin_port = htons(MASOCKET);
if (bind(sock_serv, (struct sockaddr *) &servaddr, sizeof(servaddr)) < 0)
{
perror("bind error");
exit(1);
//en cas d'erreur
}
if (listen(sock_serv, 10) < 0)
{
//avec listen, le socket est converti en listening socket (ecoute)
//sur lequel les demandes de connections vont etre acceptees par le Kernel
perror("listen error");
exit(1);
//en cas d'erreur
}
cpt=0;
while (1) //boucle infinie
{
printf("%s: \n attente de connexion sur le port TCP %u\n",argv[0],MASOCKET);
while (cpt<10)
{
if ((new_sock = accept(sock_serv, (struct sockaddr *) NULL, NULL)) < 0)
{
//accept retourne un "descripteur de connection" (connected descriptor) qui est utilise pour la communication avec le nouveau client. Un nouveau pour chaque client
// connexion de la socket client sur le serveur
if (connect(sock, (struct sockaddr *) &sin,sizeof(sin)) < 0)
{
perror("Il n'y a pas de serveur \n");
exit(1);
}
else
printf("Connexion reussie\n");
i=0;
do
{
recv(sock,buffer,MAX_TAILLE,0);
#ifdef WINDOWS
buffer[MAX_TAILLE] = '\0';
#endif
printf("\n%s\n",buffer);
i=i+1;