comment envoyer un int par UDP en java
Je suis en train d'écrire un peu de code qui envoie un int sur UDP. Le code que j'ai pour l'instant:
Expéditeur:
int num = 2;
DatagramSocket socket = new DatagramSocket();
ByteArrayOutputStream bout = new ByteArrayOutputStream();
PrintStream pout = new PrintStream( bout );
pout.print(num);
byte[] barray = bout.toByteArray();
DatagramPacket packet = new DatagramPacket( barray, barray.length );
InetAddress remote_addr = InetAddress.getByName("localhost");
packet.setAddress( remote_addr );
packet.setPort(1989);
socket.send( packet );
Récepteur:
DatagramSocket socket = new DatagramSocket(1989);
DatagramPacket packet = new DatagramPacket(new byte[256] , 256);
socket.receive(packet);
ByteArrayInputStream bin = new ByteArrayInputStream(packet.getData());
for (int i=0; i< packet.getLength(); i++)
{
int data = bin.read();
if(data == -1)
break;
else
System.out.print((int) data);
Le problème est que le récepteur est en cours d'impression '50' à l'écran qui n'est évidemment pas la droite. Je pense que le problème peut être que je suis en quelque sorte de l'envoyer comme une chaîne ou quelque chose et ce n'est pas la lecture de ce droit. Toute aide?
Vous devez vous connecter pour publier un commentaire.
Utilisation des flux de données comme:
}
InputStream.read() renvoie un octet, pas un entier de 32 bits (voir javadoc). Donc, ce que vous voulez, c'est
Le problème, c'est que vous recevez des CHAR de CODE de " 2 " et pas acctual 2, en tant qu'entier. Essayez de changer votre code récepteur à:
Mais ObjectInputStream solution est la meilleure pour vous, je suppose.