2010-07-27 5 views
1

je besoin d'un exemple d'application du scénario suivant
1) IOCP TCP serveur capable de client d'accepter la demande
2) faire une demande et envoyer l'opération de réception
3) SERVEUR fermer la connexion
4) client ouvrir une autre socket pour la connexion et envoyer l'opération de réceptionExemple TCP application client/serveur

Avec cet exemple je veux voir comment un client peut ouvrir une connexion et après que le serveur ferme cette connexion une autre connexion réussie peut être faite avec le client et envoyer de nouveau recevoir fonctionnement
Comment effectivement le serveur peut gérer la connexion et les prises rejetées les restes ouverts indésirables?

S'il vous plaît S'il vous plaît aidez-moi avec
Cela peut souffler une nouvelle âme dans mon corps !!!!

+4

* "Cela peut faire sauter une nouvelle âme dans mon corps" * - Je vais trouver un moyen d'utiliser cette expression le plus rapidement possible. –

+0

Aucune langue spécifiée. Parce que vous avez ajouté un tag .NET, je suppose que C#? mais veuillez préciser. – abelenky

Répondre

1

J'ai écrit une série d'articles sur The Code Project il y a plusieurs années qui présentait un ensemble de codes pour la construction de serveurs TCP basés sur IOCP. Le code est en C++ et votre question est étiquetée ".net" mais il semble peu probable que vous vouliez développer un serveur .Net en utilisant IOCP directement puisque vous pouvez utiliser les différentes méthodes de socket asynchrone pour faire la même chose sans avoir besoin de se salir les mains avec le côté réel des choses du COI.

... Quoi qu'il en soit

Le premier article est lié à partir d'ici: http://www.serverframework.com/products---the-free-framework.html

J'ai mis à jour depuis un peu le code et il peut être trouvé here.

Il n'y a pas de code client, mais vous pouvez vous connecter au serveur avec telnet et envoyer les données à recv ...

+0

Je veux juste savoir comment il gère les connexions rejetées c'est très important, supposons qu'un pirate essaye d'ouvrir 1000 connexions à mon serveur et après que le serveur le rejette mais le socket créant cette connexion se connecte encore et je pense qu'il utilise les ressources serveur peut voir avec la commande netstat – Ehsan

+0

Tout dépend de la façon dont vous écrivez le serveur. Si un client ouvre 1000 connexions et ne fait rien alors ces connexions utiliseront les ressources du serveur. Peut-être que votre serveur a un protocole qui nécessite une connexion, vous pouvez vous assurer que la connexion ne peut rester à l'étape 'pré-connexion' pendant plus de x secondes et les déconnecter s'ils le font ... Cela n'a rien à voir avec l'IOCP comment vous gérez ce genre de situation, vous obtiendrez les mêmes problèmes avec un thread old school par connexion ou un serveur de sélection. –

0

http://www.codeproject.com/KB/IP/iocp_server_client.aspx

Cet article m'a donné une bonne compréhension du client IOCP et TCP/IP du serveur manipulation. Avec plusieurs fonctionnalités de gestion de client. Pour votre question, si vous devez restreindre les threads inactifs, le serveur devrait être capable de démarrer le timer pour chaque connexion entre le client et le serveur sur chaque port qui peut être comme un décorateur.

Pour arrêter d'obtenir 1000 connexions du même client, je suppose que vous devriez creuser plus dans la programmation réseau.