begin process at 2010 03 15 16:16:06
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Réseau / Internet

 > 

Problème fermeture socket


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

Problème fermeture socket

mardi 20 juillet 2004 à 11:25:44 | Problème fermeture socket

alexixlebaulois

Salut,

Je suis en train de créer une appli qui communique avec plusieurs serveurs pour récupérer leur état. Toutes les communications se font en même temps au moyen de threads. En gros, j'ai une vingtaine de threads qui communiquent toutes les 10 secondes avec des serveurs. Il y a autant de threads que de serveurs. Le code de chaque thread est le suivant :

DWORD WINAPI thread_tcp(LPVOID p)
{
char message[BUFFER_LENGTH];
SOCKET skt_client;
SOCKADDR_IN sin_client;
int timeout = 5000;

try
{
sin_client.sin_addr.s_addr = inet_addr(str_config_tcp->_str_config_tcp._ip.c_str());
sin_client.sin_family = AF_INET;
sin_client.sin_port = htons(str_config_tcp->_str_config_tcp._port);
skt_client = socket(AF_INET, SOCK_STREAM, 0);
if(skt_client == INVALID_SOCKET)
throw string("ERROR : fail to create socket");

if(connect(skt_client, (SOCKADDR *)&sin_client, sizeof(sin_client)) != SOCKET_ERROR)
{
setsockopt(skt_client, SOL_SOCKET, SO_RCVTIMEO, (char*)&timeout, sizeof(timeout));
setsockopt(skt_client, SOL_SOCKET, SO_SNDTIMEO, (char*)&timeout, sizeof(timeout));

message[0] = ...;
if(send(skt_client, message, 5, 0) == SOCKET_ERROR)
{
closesocket(skt_client);
throw string("ERROR : fail to send to server");
}
if(recv(skt_client, message, BUFFER_LENGTH, 0) != SOCKET_ERROR)
{...}
closesocket(skt_client);
}
}
catch(...){...}
return 0;
}

L'application est temps réel, elle tourne en permanence. Le problème c'est qu'au bout d'une journée, elle plante et lorsque je fais un "netstat", la liste des sockets est énorme, ce qui fait que Windows est saturé niveau connexions (même Internet ne marche plus...). J'ai donc un problème pour fermer mes sockets. Les serveurs sont écrits en Pascal (c'est pas moi qui les ai faits). J'ai essayé plusieurs trucs :
- mettre shutdown(skt_client, 2); avant le closesocket.
- mettre shutdown(skt_client, 2); sans le closesocket.
- utiliser l'option SO_LINGER (je ne suis pas sûr de l'avoir bien fait).

Je suis débutant en sockets alors j'avoue que je suis vraiment perdu dans cette histoire. Quelqu'un peut m'aider ?
mardi 20 juillet 2004 à 13:01:05 | Re : Problème fermeture socket

aardman

Membre Club
Salut,
Affiche le numero de l'erreur avec WSAGetLastError() apres les appel a closesocket().
Ca permetra peut etre d'y voir plus clair.
jeudi 15 mai 2008 à 04:09:39 | Re : Problème fermeture socket

Kian_ix

putin mec t trop flag mdr


Cette discussion est classée dans : client, socket, skt, sin, tcp


Répondre à ce message

Sujets en rapport avec ce message

Probleme de Client Serveur [ par Krox68 ] voila jaimerais faire un programme client qui puisse se connecter a ce serveur : #include void main(){ WSADATA WSAData; WSAStartup(MAKEWORD(2,0), &WS problème socket sous windows [ par kod32 ] Voici mon code : (winsock2.h)-----------------------------int main(){ /* inialisation */ WSADATA wsa; WSAStartup(MAKEWORD(2,0), &wsa); /* Timeout TCP [ par alexixlebaulois ] Bonjour,j'ai un gros problème dans mon prog: j'ai plusieurs threads qui communiquent en même temps avec des logiciels externes pour récolter des stats Client/Serveur, encore..... [ par glubust ] Je veux faire fonctionner une application client/serveur sous UNIX (client) et WINDOWS (serveur).Le programme client envoi une simple requête au serve problème serveur TCP en C [ par lenneth666 ] Bonjour j'ai essayé de faire un client server TCP en C mais mon serveur bloque a l'instruction suivante : client_socket = accept( ma_socket,(struct probleme socket + API ( +thread ?) [ par lolorenzeb ] Bonjour à tous,Voila j'avais deja poster dans un précédent sujet mais comme j'ai revu tout mon code cela va etre plus simple de répondre. J'ai donc cr Problème linkage [ par M5i9k ] Salut à tous!Je débute les socket en c++ et j'ai un problème à la compilation, est-ce que quelqu'un pourrait m'expliquer, voici mon code :// Serveur T Boucle de connection client TCP [ par ssmint ] Bonjour à tous,Mon dernier souci en date est de pouvoir créer une un client qui essaie de se connecter toutes les secondes.Je fais donc une boucle ave Client serveur [ par fanch314 ] Je que le serveur et le client échange par internet.Le serveur ne voit pas de client connectéEt le buffer du client contient nimporte quoi.En gros ils Problème d'IP Client avec les winsock [ par Cphil51 ] Boujour a tous.Je m'interesse en ce moment aux socket sous windows et j'ai un petit probleme actuellement. J'aimerais savoir comment récupérer l'IP d'


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

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 : 1,264 sec (4)

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