- ベストアンサー
現在、javaでプログラムを書いておりその際に独自のクラス型データをソ
現在、javaでプログラムを書いておりその際に独自のクラス型データをソケット通信 で送受信したいと考えています。 しかし、シリアライズを使うと別のマシーン間での送受信ができないようでした。 JavaRMIを使わずにTCPやUDPで独自のクラス型データを送受信する方法はあるのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
クラスCのオブジェクトをシリアライズしてマシンXからマシンYへ送るとします。そのような場合、XのクラスパスにCが入っているのは当然ですが、Y側のクラスパスにもCが入っている必要があります。 受信側のクラスパスにクラスCがなくてもデータを受け取って解釈したいということでしょうか? もっと低レベルな形で通信データをやりとりするのであれば、DataOutputStreamとByteArrayOutputStreamを使って書き出したbyte配列データを送信し、受信側ではそれをDataInputStreamとByteArrayInputStreamを使って読み出す方法もあります。ただし、どんなデータが送られてくるのかを受信側が知っている必要があることには変わりありません。
その他の回答 (1)
- salsberry
- ベストアンサー率69% (495/711)
回答No.1
> シリアライズを使うと別のマシーン間での送受信ができないようでした。 そう思った理由を書いてみてください。
補足
回答ありがとうございます。 > シリアライズを使うと別のマシーン間での送受信ができないようでした。 こう思った理由ですが、シリアライズでは復元の際に送信時のクラス型を用いる必要があり 送信と受信が別のマシーンである場合、受信側に送信側のクラス型をどのように伝えるのか が分からなかったからです。 知識不足で理解できていないこともあると思いますのでよろしくご教示ください。