begin process at 2008 09 06 04:34:20
1 237 644 membres
42 nouveaux aujourd'hui
14 313 membres club

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é: 11 446 / 1 861

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

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 !!!
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

26 février 2007 14:03:44 :
Correction mot clés
  • 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

Pub



Appels d'offres

CalendriCode

Septembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
2930     

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

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

Boutique

Boutique de goodies CodeS-SourceS