Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

BASE POUR SERVEUR/CLIENT TCP/IP AVEC NETWORKSTREAM


Information sur la source

Catégorie :Réseaux & Internet Source .NET ( DotNet ) Classé sous : client, serveur, networkstream, tcp, ip Niveau : Débutant Date de création : 04/02/2005 Date de mise à jour : 26/02/2007 14:03:43 Vu / téléchargé: 13 193 / 2 094

Note :
8,8 / 10 - par 10 personnes
8,80 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (13)
Ajouter un commentaire et/ou une note


Description

Cliquez pour voir la capture en taille normale
Sert de base à l'implémentation de la gestion  Client/serveur. Développer en mode console. Il permet la connexion de plusieurs client sur le serveur avec la gestion du multithread. Il présente :
- La connexion avec NetworkStream
- Le multi-thread
- Les fonctions delegate
- Les événements
- Les tables "Hashtable"
- La notion d'objet
Il a été développé aussi court que possible et commenté au maximum pour permettre la modification et la mise en place dans n'importe quel projet. Possibilité de quelques bugs, pas vu pour l'instant.
Cependant, il n'inclue pas la destruction d'un client dans la table de Hashage (prochaine mise à jour)
 

Conclusion

Développé sous 2 jours, il sera mis à jour dès que possible. Je tiens tout particulièrement à remercier MorpionMx et TheSaid (Admin) pour leur aide, sans qui, je n'aurais pas fait tout ça. Il est donc de mon devoir de transmettre la source sur le site pour permettre à tout le monde de profiter de mon apprentissage sur la gestion Client/Serveur. J'ai essayé d'être le plus clair et simple possible dans mes commentaires qui j'espère ne sont pas faux.
N'hésitez à mettre des commentaires et à gueuler si j'ai mis des choses fausses !!!
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

26 février 2007 14:03:44 :
Correction mot clés

Commentaires et avis

signaler à un administrateur
Commentaire de boutnell le 08/02/2005 20:23:19

bon source:) c ce que je cherchais.. et en plus c bien commenter !
Merci

signaler à un administrateur
Commentaire de MATHIS49 le 02/02/2006 00:19:53

Bravo, ca marche et c'est tres bien commenté ! 9/10

signaler à un administrateur
Commentaire de walteau le 05/11/2006 01:11:29

Source très bien commentée c vrai! merci ;)

signaler à un administrateur
Commentaire de damned3 le 14/01/2008 05:56:15 8/10

merci super utile pour comprendre la base

signaler à un administrateur
Commentaire de xankow le 19/06/2008 08:35:20

Merci pour ce code bien commenter. Mais malgres ca il me reste un petit probleme.
Dans mon application, lorsqu'un client se deconnecte, puis se reconnecte. J'ai besoin de savoir que c'est le meme client (via son IP). Or la a la reconnection il va le nommer evec un nouvel increment.
Je ne trouve pas de solution a mon probleme. Si quelqu'un peu m'aider ce serai super.

signaler à un administrateur
Commentaire de billou_13 le 19/06/2008 09:14:37

Bonjour,

Tout d'abord, merci pour le (et j'en profite pour dire merci à tous les commentaires) commentaire.

Pour la reconnection d'un client, tu peux très bien conserver le lien adresse IP - Login en utilisant la classe Dictionnary<TKey, TValue>. Ainsi, tu pourras lui ré-attribuer le login à sa reconnection.
Cependant, il y a plusieurs hics (ce qui explique pourquoi la plupart des gens ne font pas comme ça ^^):
  1) Tu pouvais avant connecter un même poste plusieurs fois sur le chat sans aucun souci. Aujourd'hui, ils auront le même login: pas cool !
  2) Le dictionnary grandit à l'infini (il faut donc un time-out) pour le purger de temps en temps. Et là, ca complique les choses.
  3) Quand tu redémarre ton serveur, tu perds toutes les infos.

C'est pour cela que :
  - Soit tu demandes le login souhaité à la connection (et tu vérifies qu'il n'existe pas déjà).
  - Soit tu créé un système de "login/mot de passe" que tu garderas côté serveur (dans une base de données, un fichier, ...).

Bonne journée,


Billou_13

signaler à un administrateur
Commentaire de xankow le 19/06/2008 10:59:41 9/10

Merci de ton aide.
Mais je pense que j'aurai du expliquer mon application pour commencer.

Il s'agit d'un PC qui fait office de serveur (qui ne doit jamais se deconnecter en theorie :)
Et d'une dizaine d'automate sur le meme reseau qui ont une adresse IP chacun et qui se deconnecte reconnecte tres souvent (du a l'electronique).

Le serveur doit pouvoir lire tous les message des clients, et pouvoir envoyer un message de correction a un client en particulier, celui qui n'est pas en phase par exemple.

C'est pour cela que je pensais donner l'ip de client comme numero_client. Plutot qu'un increment.

Et je ne sais pas comment obtenir l'Adresse du client avant le creation du nouveau client.
exemple:
Client Client_Temp = new Client(IP_Client,NetworkStream);

Je sais pas si tu vois bien ou est mon probleme.
Mais je debute en c#, et en reseau, alors meme pour moi c'est encore confus.

signaler à un administrateur
Commentaire de billou_13 le 19/06/2008 11:33:29

Dans ce cas, tu peux faire un fichier d'association "Adresse IP"-"Serveur". Un fichier texte peut faire l'affaire (ou xml à la limite: en utilisant les fichiers Settings, ca peut être classe ^^). Ainsi, ton appli serveur pourra identifier les connections.

Pour connaitre l'adresse IP de la personne qui se connecte, j'ai trop eu le temps de voir mais je pense que j'ai une piste:
- Après la ligne:
TCP_Client = TCP_Serveur.AcceptTcpClient();
- Ajoute la ligne:
IPAddress address = ((IPEndPoint)TCP_Client.Client.RemoteEndPoint).Address;
Tu auras alors accès à l'adresse IP dans l'objet "address".

Voila,

Bonne journée,

Billou

signaler à un administrateur
Commentaire de xankow le 19/06/2008 12:00:44

'System.Net.Sockets.TcpClient.Client' est inaccessible en raison de son niveau de protection

Voila le message d'erreur que j'obtiens avec:

TCP_Client = TCP_Serveur.AcceptTcpClient();
IPAddress address = ((IPEndPoint)TCP_Client.Client.RemoteEndPoint).Address;

Si tu peux encore m'aider, ca serai vraiment super.

MERCI

signaler à un administrateur
Commentaire de billou_13 le 19/06/2008 12:28:28

Je comprends pas, chez moi, ca marche très bien.
Je ne vois pas ce qui clôche. Désolé

Billou_13

signaler à un administrateur
Commentaire de xankow le 19/06/2008 12:30:25

ok

Merci pour tout.

signaler à un administrateur
Commentaire de xankow le 19/06/2008 14:18:53

Je suis sous le framework 1.1,
et la msdn me dis que Client est "Propriétés protégées".

est ce que mon erreur peut venir de la?


signaler à un administrateur
Commentaire de billou_13 le 19/06/2008 15:46:13

Il semblerait que ce soit la raison : http://msdn.microsoft.com/fr-fr/library/system.net.ipendpoint(VS.80).aspx (This page is specific to
Microsoft Visual Studio 2005/.NET Framework 2.0)

Pour le framework 1.1, je ne vois pas et je n'ai pas Visual Studio 2003 sur mon poste.

Billou_13

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Thread + NetworkStream [ par JuS ] Je vais vous exposer mon problème (c'est un peu long à lire et à comprendre...)Je programme un programme client/serveur.Le client, en C#, communique a Ca rame sévère ! [ par billou_13 ] Voila, g fait un programme serveur en utilisant les NetworkStream et je c pas pourquoi, d&#232;s qu'il y a 3 clients minimum, le serveur se met a rame [tcp]Gestion de la deconnexion [ par Sobieski ] Voila, j'ai un serveur TCP auquel vient se connecter un client (marrant non ?)J'aimerais quand je ferme le client que le serveur se remette en &#233;c Adresse IP d'un TcpClient [ par Thufenn ] Bonjour tout le monde, Voilà mon pb. j'ai un systeme client-serveur dans lequel mes clients envoie des ordres d'executions (avec une connexion TCP), Récupérer l'adresse IP [ par thebigboss ] Bonjour,je voudrais savoir comment faire pour r&#233;cup&#233;rer son adresse IP et celle d'un message post&#233; sur un port.Je m'explique, je suis a CLient/serveur séparés par un proxy [ par thebigboss ] Salut,je suis toujours en tran de me battre avec mon MSN like. J'ai un serveur et un client. Le client se connecte au serveur via un port et l'IP du s client / serveur = > avec adresse ip public [ par 10demon10 ] Bonjour à tousVoila j'ai modifié une source de client / serveur trouver sur codes sources et tous fonctionne correctement (ajout de plusieurs clients optenir l'adresse publique de sa machine c# [ par 10demon10 ] Bonjour à tous Voila j'ai une nouvelle problématique sur mes petites socket, j'ai no-ip de configurer comme il faut ac mon modem-routeur (les ports et TCP Listener et les threads [ par mimosa803 ] Bonjour,Je suis entrain de développer une application Client/Serveur en utilisant TCPClient et TCPListener. Mon problème est comment je peux créer un Serveur mutli-threads [ par mimosa803 ] Bonjour,Je suis entrain de développer une application Client/Serveur en utilisant TCPClient et TCPListener. Mon problème est comment je peux créer un


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,608 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.