web-dev-qa-db-ja.com

Javaソケットを介してJsonオブジェクトを送信する方法は?

Javaこれは私がこれまでに得たものです

    s = new Socket("192.168.0.100", 7777);
    ObjectOutputStream out = new ObjectOutputStream(s.getOutputStream());
    JSONObject object = new JSONObject();
    object.put("type", "CONNECT");
    out.writeObject(object);

しかし、これはJava.io.streamcorruptedexception例外に何か提案を与えますか?

6
user3339626

ObjectOutputStreamを使用する代わりに、OutputStreamWriterを作成し、それを使用してJSON textをストリームに書き込む必要があります。エンコーディングを選択する必要があります-UTF-8をお勧めします。したがって、たとえば:

JSONObject json = new JSONObject();
json.put("type", "CONNECT");
Socket s = new Socket("192.168.0.100", 7777);
try (OutputStreamWriter out = new OutputStreamWriter(
        s.getOutputStream(), StandardCharsets.UTF_8)) {
    out.write(json.toString());
}
17
Jon Skeet