2012-04-11 16 views
2

データグラムソケット経由で整数配列を送信しようとします。これを達成する最良の方法は何ですか? MY送信コードは次のとおりです。int配列は、Javaでデータグラムソケットプログラミングで送信および受信

public void sendObj(Object obj) { 
     try{ 
      byteArr = new ByteArrayOutputStream(); 
      objOut = new ObjectOutputStream(byteArr); 
      objOut.writeObject(obj); 
      byte[] b = byteArr.toByteArray(); 
      DatagramPacket dgram = new DatagramPacket(b, b.length, InetAddress.getByName("230.0.0.1"), 4446); // multicast 
      socket.send(dgram); 
      System.out.println("Package is sent!"); 
     }catch(Exception e){ 
      System.out.println(e.getMessage()); 
      e.printStackTrace(); 
     } 
    } 

と受信コードは次のとおりです。

byte[] b = new byte[65535]; 
ByteArrayInputStream b_in = new ByteArrayInputStream(b); 
DatagramPacket dgram = new DatagramPacket(b, b.length); 

socket.receive(dgram); // blocks 
ObjectInputStream o_in = new ObjectInputStream(b_in); 
Object o = o_in.readObject(); 
dgram.setLength(b.length); // must reset length field! 
b_in.reset(); // 

は、しかし、私はそれが私達は基本的な変更によって、その問題を解決し、未知のヘッダ値00000

+0

bの値を決して初期化していないと思います。またはbyteArr – Kevin

+0

はい、あなたは正しいと信じています... –

+0

この質問は今解決されましたか? – daveb

答えて

0

ためStreamExceptionを与え受け取るとき。 "100200300 ..."のような文字列を使用して、2つの0で要素を区切って配列をシンボル化しました。そのようにArrayListを使用しませんでした。

0

あなたがバイトを取得するためにgetbyte()メソッドを使用する必要があり、それをクライアントに渡すか、それを送信し、その後のデータグラムパケットインスタンスにこれらのバイトを入れて...

使用

arrayName.getBytes(); /// save this into some byte[] temp = new byte[size]; 

とデータグラムパケットを作成し、その引数を入れて送信してください

関連する問題