0

クライアントコード:

try {
            Socket socket = new Socket(ip, port);
            OutputStream output = socket.getOutputStream();
            ObjectOutputStream out = new ObjectOutputStream(output);
            InputStream input = socket.getInputStream();
            ObjectInputStream in = new ObjectInputStream(input);
            out.writeByte(1);
            FileHandler fh = (FileHandler) in.readObject();
            //processing stuff
            out.flush();
            out.close();
            output.flush();
            output.close();
            input.close();
            in.close();
            socket.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

サーバーコード:

        try {
            ServerSocket server = new ServerSocket(port);
            Socket socket = server.accept();
            InputStream input = socket.getInputStream();
            ObjectInputStream in = new ObjectInputStream(input);
            int type = in.readByte();
            //processing stuff (which includes closing the streams and sending FileHandler object)
            socket.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

サーバーはバイトを受信しません。クライアントからのバイトを待つだけで、決して来ません。なぜ送信されないのか、受信されないのかわかりません。どんな助けでも大歓迎です。

4

2 に答える 2

3

私が推測しなければならなかったのは、クライアントでin.readObject();サーバーが何かを送信するのを待ってブロックしているため、出力ストリームをフラッシュしないためです...何も送信されません。

出力ストリームをフラッシュした、読み取りを移動します。

于 2012-02-01T06:04:25.570 に答える
1

writeObjectメソッドとreadObjectメソッドを使用してみてください。また、intではなく整数をストリームに書き込みます。先に進む前に、この本当に良い講義を読んでください。

これはあなたの問題に対する良い講義でもあります。

よろしく!

于 2012-02-01T06:07:33.060 に答える