0

これは私のクライアントコードです

Random rand = new Random();
int  n = rand.nextInt(50) + 1;
DataInputStream dis = new DataInputStream(_socket.getInputStream());
DataOutputStream dos = new DataOutputStream(_socket.getOutputStream());
dos.writeInt(n);

これはサーバーコードです

try {
     DataInputStream dis = new DataInputStream(socket.getInputStream());
     BufferedReader input = new BufferedReader(new InputStreamReader(dis));  
     int fromClient = input.read();
     System.out.println(fromClient);
} catch (IOException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
}

しかし、このように変更しても、 fromClient で何も受信しません

System.out.println(fromClient+"test");

結果が出ない

4

2 に答える 2

1

writeInt()書き込み側で使用している場合はreadInt()、読み取り側で使用する必要があります (すべてのメソッド名は DataOutputStream と DataInputStream の間で相関しています。javadoc を参照してください)。

于 2013-04-30T15:43:48.163 に答える
1

クライアントは、バッファリングされたデータを呼び出すdos.flush()か、サーバーにプッシュする必要があります。dos.close()(さらにデータを書き込む場合はフラッシュし、それ以外の場合は閉じます。)

サーバー側は、DataInputStreamインスタンスで readInt を使用してデータを読み取る必要があります。DataOutputStream を使用して書き込まれたデータは、DataInputStream を使用して読み取る必要があります。

最後に、BufferedReader/InputStreamReader を取り除きます。それはただ間違っています。

于 2013-04-30T15:43:56.337 に答える