1

Javaのソケット間でハッシュテーブルを書き込もうとしていますが、次のエラーが発生します:エラー:書き込みが中止されました。java.io.NotSerializableException: java.net.Socket

どのように私は書くことができます

編集済み:

 socktmp= mainSocket.accept();
        rdr= new BufferedReader( new InputStreamReader(socktmp.getInputStream()));
        String t="";
        String name=rdr.readLine();

        //rdr.close();
        LstClient.AddClient(name, socktmp);

        objwriter = new ObjectOutputStream(socktmp.getOutputStream());
        objwriter.writeObject(LstClient.clients);
        objwriter.flush();  
        objwriter.close();
4

1 に答える 1

1

ソケットをシリアル化することはできません。シリアライズ可能なオブジェクトの HashMap のみをシリアライズできます。ソケットを保持するオブジェクトへの暗黙的な参照を持つ匿名またはネストされたクラスを追加していないことを確認してください。

ところで: 回避できる場合は Hashtable を使用しないでください。代わりに HashMap または LinkedHashMap または ConcurrentHashMap を使用してください。

于 2013-01-07T20:55:37.943 に答える