analyser les caractères d'échappement comme un octet
Je envoyer des requêtes à partir d'un socket client à un serveur de socket et je tiens à différencier les demandes(envoyer comme un tableau d'octets) à l'aide d'un caractère d'échappement("\n"). Je veux avoir une demande par nouvelle ligne
exemple :
"Request1 "
"Request2"
"Request3"
Pour ce faire , j'ai besoin de convertir les "\n" dans l'octet dans le but de comparer les requêtes comme cela
byte[] request= new byte[1024];
int nextByte;
while((nextByte=in.read(request))!=DELIMITER)
{
String chaine = new String( request,0,nextByte);
System.out.println("Request send from server: " + chaine);
}
Le problm est que je reçois un format de nombre exception lorsque je suis en train de convertir les "\n" dans l'octet
private static final byte DELIMITER = Byte.valueOf("\n");
Merci beaucoup
Byte.valueOf(...)
n'est pas ce que vous pensez que cela fonctionne. Rechercher dans la documentation de l'API.pas assez bon pour une réponse, mais aussi: whatthekeycode.com
in.read(bytes)
retourne la longueur de la lire, pas un délimiteur.OriginalL'auteur ulquiorra | 2012-09-12
Vous devez vous connecter pour publier un commentaire.
Essayez ceci:
Les guillemets sont des littéraux de Chaîne, des apostrophes pour les personnages, et l'Octet#valueOf n'est autre chose que ce que vous pensez que cela fonctionne.
Si vous voulais transformer une Chaîne en octets, vous feriez:
OriginalL'auteur Thilo
Il y a beaucoup de réponses à votre question, mais la prochaine question sera, pourquoi n'est pas ma boucle fonctionne? par exemple, si vous lisez exactement 10 octets de long, il va l'arrêter et si vous envoyer deux messages à la fois qu'ils seront lus en une seule lecture.
Ce que vous voulez vraiment est quelque chose comme
Lawrey. En effet , je vous remercie pour votre aide. La pensée de la fonction de lecture permettent de comparer les 2 octets de données. Cela fonctionne pour toutes les demandes ligne par ligne ?
À la lecture de deux octets de données dans binaire, vous pouvez utiliser DataInputStream mais vous ne pouvez pas utiliser quoi que ce soit ici.
OriginalL'auteur Peter Lawrey
S'il vous plaît essayer cette
'\n' est de type
char
qui correspond à unsigned short. Mais gardez à l'esprit queshort
en Java est toujours signé.OriginalL'auteur Ivan Koblik
Comment à ce sujet:
Joignant le retour à la ligne dans des guillemets simples faire un char de la valeur, qui peut être attribué à un octet, sans aucune perte d'information dans ce cas.
OriginalL'auteur codebox