Si tu peux encore m'aider, ca serai vraiment super.
MERCI
billou_13
Messages postés860Date d'inscriptionjeudi 4 mars 2004StatutMembreDernière intervention19 août 201429 19 juin 2008 à 11:33
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
xankow
Messages postés10Date d'inscriptionmardi 17 juin 2008StatutMembreDernière intervention 8 juillet 2008 19 juin 2008 à 10:59
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.
billou_13
Messages postés860Date d'inscriptionjeudi 4 mars 2004StatutMembreDernière intervention19 août 201429 19 juin 2008 à 09:14
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
xankow
Messages postés10Date d'inscriptionmardi 17 juin 2008StatutMembreDernière intervention 8 juillet 2008 19 juin 2008 à 08:35
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.
damned3
Messages postés22Date d'inscriptionmercredi 8 juin 2005StatutMembreDernière intervention18 décembre 2007 14 janv. 2008 à 05:56
merci super utile pour comprendre la base
walteau
Messages postés23Date d'inscriptionmercredi 21 mai 2003StatutMembreDernière intervention13 janvier 2007 5 nov. 2006 à 01:11
Source très bien commentée c vrai! merci ;)
cs_MATHIS49
Messages postés368Date d'inscriptionvendredi 10 octobre 2003StatutMembreDernière intervention14 mai 20101 2 févr. 2006 à 00:19
Bravo, ca marche et c'est tres bien commenté ! 9/10
boutnell
Messages postés22Date d'inscriptionmercredi 9 janvier 2002StatutMembreDernière intervention28 avril 2007 8 févr. 2005 à 20:23
bon source:) c ce que je cherchais.. et en plus c bien commenter !
Merci
4 oct. 2009 à 02:34
19 juin 2008 à 15:46
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
19 juin 2008 à 14:18
et la msdn me dis que Client est "Propriétés protégées".
est ce que mon erreur peut venir de la?
19 juin 2008 à 12:30
Merci pour tout.
19 juin 2008 à 12:28
Je ne vois pas ce qui clôche. Désolé
Billou_13
19 juin 2008 à 12:00
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
19 juin 2008 à 11:33
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
19 juin 2008 à 10:59
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.
19 juin 2008 à 09:14
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
19 juin 2008 à 08:35
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.
14 janv. 2008 à 05:56
5 nov. 2006 à 01:11
2 févr. 2006 à 00:19
8 févr. 2005 à 20:23
Merci