IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

[C#] Prog. Réseau: Problème de socket client


Sujet :

C#

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2003
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 6
    Points : 5
    Points
    5
    Par défaut [C#] Prog. Réseau: Problème de socket client
    Bonjour,

    je suis en cours de développement d'une application client / serveur en C#.

    Le client de mon architecture a besoin de se connecter à un serveur distant mais pour cela l'administrateur réseau a défini des règles +- strictes.

    En effet il exige que j'utilise un port TCP IP spécifique (1023 dans mon cas) lors de l'établissement de la connexion au serveur.

    Quelqu'un aurait il une idée de comment il est possible de définir un port spécifique à utiliser dans la socket client C#?

    Merci d'avance pour votre aide.

    Cordialement.

    François

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 103
    Points : 1 561
    Points
    1 561
    Par défaut
    tout dépend de la classe d'encapsulation des sockets que tu utilise.

    ensuite tout dépend des règles édictées.

    quand on parle de socket, il y a deux coté, le coté local, et le coté distant (remote).
    quand on parle de règle de sécurité, et qu'on oblige à utiliser les ports, il y a également deux façon de voir les choses.

    Dire que ton client se connecte au port 1023, c'est le cas le plus simple.
    En revanche, il peut attendre de toi, que ton client se connecte au port X du serveur en provenant de ton port local 1023... Là ce n'est possible qu'avec les classes de bas niveau des sockets.
    En général dans les sockets clients, on s'abstient de faire un bind pour sélectionner l'ip et le port, ou on le fait en mettant des paramètres génériques indiquant au systeme de se démerder tout seul... et bien la il suffit de le faire en forcant les paramètres de ce binding...

    Maintenant il est inutile de te donner des exemples de code sans savoir quelles classes tu utilises, et pourquoi ces classes et pas d'autres (vu la quantité phénoménales de classes d'accès au réseau disponible dans le framework)

    En général, quand on a une contrainte de ce type, on la note dans le fichier de configuration, si l'attribut de config est défini, c'est qu'on a la contrainte et on l'applique sinon c'est qu'on ne l'a pas.
    Maintenant dans tous les cas sur ton client il est OBLIGATOIRE de définir un hôte d'appel, mais également le port à contacter, sauf si tu utilise la notion de service et que tu défini un service, auquel cas, les services ont des ports par défaut que l'on peut modifier, en mettant le bon port dans l'URI de l'hote générallement.

  3. #3
    Futur Membre du Club
    Inscrit en
    Février 2003
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Bonjour,

    merci beaucoup pour la réponse.

    Le serveur attend en effet de la part de mon client que je me connecte avec comme port local le 1023...

    Pour le moment j'utilise dans mon développement la classe System.Net.Socket afin de pouvoir me connecter au serveur et de pouvoir échanger des données. Je peux bien entendu changer de classe si c'est requis afin que je puisse définir le port local utilisé lors de la connexion vers le serveur.

    Ce client comme tu l'as bien fait remarqué tournera comme un Service NT sur Windows 2000 server.

    Merci d'avance.

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Il suffit d'utiliser la méthode Socket.Bind :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mySocket.Bind(new IPEndPoint(IPAddress.Any, 1023));

  5. #5
    Futur Membre du Club
    Inscrit en
    Février 2003
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Cette solution marche à merveille.

    Merci beaucoup à tous pour votre aide.

    Cordialement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème communication sockets serveur mutli-client
    Par muad'dib dans le forum Réseau
    Réponses: 5
    Dernier message: 17/05/2007, 02h21
  2. Problème de connection Socket Client
    Par xyz dans le forum Réseau
    Réponses: 27
    Dernier message: 12/04/2006, 15h13
  3. Problème de time-out avec un socket client.
    Par Depteam1 dans le forum MFC
    Réponses: 3
    Dernier message: 17/10/2005, 10h30
  4. Réponses: 5
    Dernier message: 24/09/2005, 20h31
  5. [Réseau] Problème socket
    Par neenee dans le forum Entrée/Sortie
    Réponses: 14
    Dernier message: 18/01/2005, 15h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo