begin process at 2012 05 30 17:24:23
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Socket et multithreading ..


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

Socket et multithreading ..

dimanche 19 octobre 2003 à 11:41:48 | Socket et multithreading ..

MoDDiB


Une ame charitable pourrait-elle faire une source ou le client tout comme le server puisse traiter des info normalment tout en pouvant en meme temps recevoir des donnés de l'autre utilisateur(et accepter des connex mais bon c optionnels :p) ..
On m'a donné des sites de multithread y a un moment mais les tut était down et c'est vraiment dur de trouver ca sur le net..

O pire un lien vers des tuts multithread ki marche serait sympatik ^^
Je crsoi que ca pourrais aider pas mal de gens ici comme moi !

Grand merci !!
dimanche 19 octobre 2003 à 12:50:52 | Re : Socket et multithreading ..

Anacr0x

regarde à :
http://www.cppfrance.com/article.aspx?ID=1875
C'est très pratique au début je trouve

puis si tu veu vraiment un serveur multiclient performant à :
http://www.cppfrance.com/article.aspx?ID=2276
dimanche 19 octobre 2003 à 14:20:50 | Re : Socket et multithreading ..

MoDDiB


^^ merci bcoup je vais voir ca ^!!
C'est bien multithreading les 2 sources ?
Enfin je v voir ca !!

encore merci!!
dimanche 19 octobre 2003 à 17:19:29 | Re : Socket et multithreading ..

Anacr0x

le multithread est une chose a éviter lorsqu'on veut un serveur multiclient, vo mieu utilisé la fonction select (2eme lien ke g mis)

La premiere source est threadé et permet de faire 2 choses en même tps (la gestion des donné envoyé par socket + ce que tu veu). Ca te permetra de faire tt ce que tu veu en tps normal et t'apprenddre a te servir d'un thread si tu regarde bien le code
mardi 28 octobre 2003 à 04:02:45 | Re : Socket et multithreading ..

aardman

Membre Club
Salut,
Dans le cas de la recherche de performance, autant oublier ces 2 modeles: le multithread consomme trop de ressources systeme, et select() c'est pratique surtout quand on veut faire des trucs portables.
Sous win, il existe d'autres modeles bcp plus performants, comme WSAAsyncSelect, WSAEventSelect, et j'en oublie.
mardi 9 février 2010 à 11:37:32 | Re : Socket et multithreading ..

valantino1




Bonjour tr le monde ,

en faite je suis entrain de programmer une ptite application multithread qui envoie des sockets à des @ IP(10 @ en simultané) et selon le retour de select de socket il decode l'entete(IpHeader) et revoi le resultat ; si on teste la select avec un seul poste en simultané il marche trés biens alors que lorsque je tente de le testé avec plus que de 2 en simultanés la select retourne toujours 1 = sig que la select contient des donnees alors ce n est pas le cas ! (car ces adresses IP ne sont pas connectés ) !
voila un extrait de code :

// Initialisation du nombre de ping à faire = nombre de retrait
if(iNBPing == 0)
iNBPing = NBPINGDEFAULT;//si le nombre de retarit est a 0 on prend le nombre par default 1.

// Initialisation du délai d'attente
if(iTpsLimite == 0)
iTpsLimite = DEFALUTTIMEOUT;//si le delai d'attente est 0 on prend le timeout par defaut 1000 MS

while((CHote->iNbRetryUsed != iNBPing)&&(!bRstConn))
{
memset(szICMP_data,0,DATASIZE_ICMP);
iID = (unsigned short)GetCurrentProcessId() + CHote->iNbRetryUsed;
// Construction du paquet ICMP
IcmpHeader *icmp_hdr;
icmp_hdr = (IcmpHeader*)szICMP_data;
icmp_hdr->type = TYPE_ICMP_ECHO; // Type du paquet ICMP : echo request
icmp_hdr->code = CODE_ICMP_NULL; // Il n'y a pas de code spécifique pour ce type de paquet
icmp_hdr->id = iID;//identificateur de paquet
icmp_hdr->sequence = SEQU_ICMP_ECHO;
icmp_hdr->timestamp = GetTickCount(); // Initialisation du temps lors de l'envoi

// Somme de contrôle sur 16 bits
((IcmpHeader*)szICMP_data)->checksum = checksum((unsigned short*)szICMP_data, DATASIZE_ICMP);

// On envoie le paquet ICMP que l'on a construit
iEnvoi = sendto(sock, szICMP_data, DATASIZE_ICMP, 0, (struct sockaddr *)&sin, DATASIZE_ICMP);
FD_ZERO(&fdsr);
FD_SET(sock, &fdsr);

tv_timeout.tv_sec = iTpsLimite/1000;
tv_timeout.tv_usec = 0;


iFindelai = 0;

do{
if (select(sock+1, &fdsr, NULL, NULL, &tv_timeout) <= 0)
{
// Dans le cas où le temps est écoulé, on veut sortir de la boucle
// on compte le paquet comme envoyé mais perdu
// delai d'attente de la demande depassée
CHote->iNbRetryUsed = CHote->iNbRetryUsed+1;
iPerte= iPerte+1;
iFindelai = 1;

}

//Cette fonction vérifie si le descripteur "sock" est contenu dans l'ensemble "fdsr" après l'appel à select.
if (FD_ISSET(sock, &fdsr))
{
// Dans le cas où le buffer du socket contient des données,
// on les décode
iRecept=recvfrom(sock, szRecvbuf, MAX_PACKET, 0, (struct sockaddr *)&from, &iFromlen);

/***********************************************************/
iphdr = (IpHeader *)szRecvbuf;
iphdrlen = iphdr->h_len * 4 ;
icmphdr = (IcmpHeader*)(szRecvbuf + iphdrlen);

if(iID!=(icmphdr->id))
{
// Cas où le paquet n'est pas à nous
iFindelai= 0;
}
else
{
CHote->iNbRetryUsed = CHote->iNbRetryUsed +1;
iFindelai= 1;
}

/***************************************************/

memset(szRecvbuf,0,MAX_PACKET);
//dés la prmiere ping : si on a l'envoi est supérieur de perte on sort
if((CHote->iNbRetryUsed-iPerte)>0)
bRstConn=true;

}
}
while(iFindelai == 0);
}


Cette discussion est classée dans : socket, multithreading, multithread


Répondre à ce message

Sujets en rapport avec ce message

Socket et multithread. [ par mohdaef ] Bonjour à tous.Pour les besoins d'un petit jeu que je suis entrain de réaliser, j'ai besoin de créer un petit serveur pour la partir réseau du jeu. Ce Problème de socket [ par MattU ] J'ai un petit soucis avec les CSocket!! Pour info, je developpe sur Visual Studio 2008 et j'aimerai utiliser la méthode des CSocket plutot que leurs e EventLog socket [ par hassene85 ] Je veux créer une application avec les sockets qui permet d'envoyer les données depuis  le journal des évenêments de windows à un serveur d'ecoute.exe [C/C++]Socket [ par moustic74 ] Bonjour,je suis actuellement en période de projets pour mon BTS, et j'ai un programme à faire.Cependant, je ne comprends pas d'ou viennent mes problem close(socket) ne débloque pas un accept() ? [ par VHSeifer ] BonsoirJ'effectue conjointement de la programmation C/C++ sur Windows & sur Linux.J'ai un petit soucis ou niveau de la terminaison de mon programme.J' Unix: sockets & Co [ par bounkolh ] Bonjour, Je cherche de l'aide pour compléter les ............ du fichier client.c permettant d'interroger le serveur implementé par server.c. Listing probleme boucles mutliple avec les sockets [ par miki42 ] Bonjour a tous voila j'ai pa le choix,deja une semaine que je mord la langue pour trouver dou vient mon probleme mais rien y fait suit obliger de fari Creer un socket bluetooth [ par siteupset ] Bonjour à tous,  depuis un petit moment j'essaie de faire un programme qui puisse communiquer avec mon téléphone portable. Je me confronte cependant à utiliser les API pipe [ par miki42 ] Bonjour a tous,voila depuis longtemp déja je souhaite réaliser un programme qui connecterait le shell de windows a savoir "cmd.exe" sur une socket.Pou Mini client msn messenger [ par hichem16 ] BonjourVoila, j'ai déja posé mon problem mais j'ai pas respecté le règlement , donc je vais vous exposer mon problem d'une autre façon <img src="http:


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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,686 sec (4)

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