2010-02-23 6 views
0

Je réalise des projets dans sockets.usuellement, le serveur écoute dans un port particulier, et le client doit se connecter au port puis l'envoi et la réception auront lieu. Mais nous ne spécifions pas n'importe quel numéro de port dans le côté client, mais je suis dans une situation pour utiliser un port dans un côté client, à travers ce port seulement les messages seront livrés au serveur. Comment faire?Envoi d'un message via un port client particulier

Dans mon côté client, ils restreignent les ports, donc si vous voulez utiliser un port libre valide, je dois le définir dans le programme client, au lieu de OS Choisir. C'est mon problème.

+0

Habituellement, le port client n'a pas d'importance et est attribué par le système d'exploitation. Pouvez-vous clarifier la phrase «à travers ce port seulement les messages seront livrés au client»? Cela ressemble à une prise sur le «client», ce qui en fait un serveur? Pourquoi n'utilisez-vous pas la connexion (en supposant TCP ici) que vous avez déjà ouverte du client pour renvoyer des messages? –

Répondre

0

Liez le socket client à l'adresse locale (adresse IP et numéro de port) avant de vous connecter au serveur. Soyez prêt à gérer les erreurs, par ex. lorsque le port n'est pas disponible (choisissez le port suivant, réessayez).

0

Je suppose que vous utilisez l'espace de noms System.Net.Sockets?

Si oui, les classes comme NetworkStream prennent le Socket comme paramètre constructeur:

http://msdn.microsoft.com/en-us/library/system.net.sockets.networkstream.aspx

De même, le TcpClient prend Port et serveur comme arguments du constructeur, Port est la même que celle prise dans ce contexte:

http://msdn.microsoft.com/en-us/library/system.net.sockets.tcpclient.aspx

Enfin. vous pouvez contrôler le nombre de cette prise de plusieurs façons:

  • ligne de commande Paramètre
  • paramètre dans un fichier Application.Config
  • Lire à partir du Registre

Il y a quelques méthodes pour ce type de chose.

Questions connexes