2014-02-26 27 views
-2

我试图使用下面的代码发送UDP套接字中的随机数字,但命令sendData = number.getBytes();不起作用。是因为我必须用getBytes替换其他东西吗?在java中的UDP套接字中发送号码

public class UDPServer { 

    public void run() throws IOException { 
     DatagramSocket serverSocket = new DatagramSocket(5555); 
     byte[] receiveData = new byte[1024]; 
     byte[] sendData = new byte[1024]; 
     while (true) { 
      DatagramPacket receivePacket = 
       new DatagramPacket(receiveData,      
         receiveData.length); 

      serverSocket.receive(receivePacket); 
      String sentence = new String(receivePacket.getData()); 
      InetAddress IPAddress = receivePacket.getAddress(); 
      int port = receivePacket.getPort(); 
      Random dice = new Random(); 
      int number; 

      for (int counter = 1; counter <= 10; counter++) { 
       number = dice.nextInt(6); 
      } 

      sendData = number.getBytes(); 

      DatagramPacket sendPacket = new DatagramPacket(sendData, 
        sendData.length, IPAddress, port); 

      serverSocket.send(sendPacket); 
     } 
+0

你的问题到底是什么......当你说别的话时呢? –

+0

我不认为有'int's的getBytes()方法吗? –

+1

一个'int'是一个基本类型,一个基本类型没有方法;更重要的是,'Integer'(它是包装类)没有'.getBytes()'。提示:使用“ByteBuffer”。 – fge

回答

1

我把它写成你想要的网络字节顺序写你的int s的字节。好。 Java有一个类:ByteBuffer

示例代码,修改你的需求:

final ByteBuffer buf = ByteBuffer.allocate(8); // for 2 ints, an int is 4 bytes long 
buf.putInt(4); 
buf.putInt(3); 
buf.rewind(); 
final DatagramPacket packet 
    = new DatagramPacket(buf.array(), buf.limit(), addr, port); 

ByteBuffer的默认操作大端,这是网络字节顺序。请参阅其.order()方法。