2010-08-05 8 views
3

Quelle est la valeur maximale du port que je peux assigner à ma socket lorsque je fais une liaison?Sockets - Port IPEndpoint (valeur maximale)

Exemple:

int port = 0; //How far can i go? 
Socket m_mainSocket; 
m_mainSocket.Bind(new IPEndPoint(IPAddress.Parse("127.0.0.1"), port)) 

Répondre

9

numéros de port IP sont des entiers non signés 16 bits. Par conséquent, 65 535 correspond au numéro de port maximal que vous pouvez attribuer.

La documentation pour les IPEndPointconstructor stipule qu'un ArgumentOutOfRangeException ressusciteront si le port est supérieur à MaxPort. La documentation pour MaxPort indique que «la valeur MaxPort est définie sur 0x0000FFFF» (65 535).

+1

+1 pour expliquer pourquoi .. –

+2

Notez que beaucoup de ports - en particulier dans la gamme de numéros supérieure - sont réservés pour être utilisés comme [ports éphémères] (http://en.wikipedia.org/wiki/Ephemeral_port) et * ne devrait pas être lié à. –

0

La classe IPEndPoint a une MaxPort et un champ MinPort - selon la documentation:

La valeur Maxport est réglé sur 0x0000FFFF.

0

Pour accéder à la programmation valeur maximale autorisée, vous pouvez utiliser IPEndPoint.MaxPort et IPEndPoint.MinPort pour la valeur minimale. Ils sont utiles pour vérifier qu'un port que l'utilisateur entre est dans les limites appropriées avant d'essayer de l'utiliser dans une connexion.