如何在java中通过UDP发送int
我正在尝试编写一段代码,通过UDP发送一个int。到目前为止,我掌握的代码是:
发件人:
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 );
接收人:
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);
问题是接收器正在屏幕上打印“50”,这显然是不对的。我认为问题可能是我以字符串或其他形式发送它,而它没有正确地读取它。有什么帮助吗
# 1 楼答案
使用数据流,如:
}
# 2 楼答案
输入流。read()返回单个字节,而不是32位整数(请参阅javadoc)。所以你想要的是
# 3 楼答案
问题是您接收到的字符代码是“2”,而不是整数形式的acctual 2。尝试将接收器代码更改为:
但我想ObjectInputStream解决方案对您来说会更好