2013-04-30 2 views
0

это мой код клиентаНевозможно прочитать номер отправить с DataOutputStream

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, даже если я chnage его как этот

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

я не получил результат

ответ

1

Клиент должен либо позвонить dos.flush(), либо dos.close(), чтобы заставить буферизованные данные быть перенесены на сервер. (Если вы намереваетесь написать больше данных, затем выполните флеш, в противном случае закрывайте их.)

Серверная часть должна считывать данные с помощью readInt в экземпляре DataInputStream. Данные, написанные с использованием DataOutputStream, следует читать с помощью DataInputStream.

Наконец, избавиться от BufferedReader/InputStreamReader. Это просто неправильно.

1

Если вы используете writeInt() на стороне записи, вы должны использовать readInt() со стороны чтения (все имена методов коррелируют между DataOutputStream и DataInputStream, пожалуйста, прочтите javadoc).