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

avec Java Discussion :

Définir un port en short


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    146
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 146
    Par défaut Définir un port en short
    Bonjour à tous,

    Je vous explique le problème :
    Je programme un réseau en TCP.

    Je dois envoyer des informations à une entité, suivant un certain protocole.
    A un moment, je dois envoyer un numéro de port sur 2 octets (ce qui dans ma tête correspond à un short ).

    Seulement, un short ne prend des valeurs tel que :
    -32k < short < +32k

    Maintenant le problème, c'est que mon port est compris entre : 50000 et 64000 (grossomodo).

    Comment puis je faire pour que Java n'utilise pas le premier bit, c'est à dire, celui qui dit si c'est négatif ou positif et aille à la place de 0 a 64000 ?
    [car pour l'instant on va de -32000 a +32000] .

    Le protocole exige que ce soit sur 2 octets donc les "int" sont à proscrire.

    Merci d'avance.

  2. #2
    Membre émérite Avatar de JoeChip
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    536
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 536
    Par défaut
    A un moment, je dois envoyer un numéro de port sur 2 octets (ce qui dans ma tête correspond à un short ).
    Juste dans ta tête... ce qui compte, c'est celle de l'ordi... Donc t'envoie les deux octets, ça va donc de 00 00 à FF FF, donc de 0 à 65535. C'est un "unsigned short", dans certaines définitions, si je n'm'abuse. Mais bon, si tu dois envoyer deux octets, envoie deux octets, quoi.

    En général, le mieux c'est de faire correspondre ce qui se passe dans ta tête avec ce qui est dit dans les specs, non l'inverse

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Si c'est en big-endian :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    short portNum = (short)50000;
    byte[] portNumBytes = new byte[2];
    portNumBytes[0] = (byte)(portNum >> 8);
    portNumBytes[1] = (byte)portNum;
    Si c'est en little-endian :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    short portNum = (short)50000;
    byte[] portNumBytes = new byte[2];
    portNumBytes[1] = (byte)(portNum >> 8);
    portNumBytes[0] = (byte)portNum;
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    146
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 146
    Par défaut
    Merci à vous, c'est très clair.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 15/11/2009, 17h31
  2. Paramètre pour définir un range de port ?
    Par Arvulis dans le forum Administration
    Réponses: 4
    Dernier message: 18/06/2008, 12h27
  3. Définir le port source d'une Socket Broadcast
    Par charles84 dans le forum C#
    Réponses: 1
    Dernier message: 17/04/2008, 12h55
  4. Site Explorer (FTP WebDAV) définir un port
    Par hush dans le forum Eclipse PHP
    Réponses: 0
    Dernier message: 06/02/2008, 16h16
  5. [Tomcat] définir un port pour une application
    Par Mrlud dans le forum Tomcat et TomEE
    Réponses: 10
    Dernier message: 14/06/2005, 17h33

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