Я новичок в сетевом программировании, и я делаю чат-программу в Java.Сначала я использовал DataOutputStream, и он работал нормально, но я подумал, что было бы более аккуратно, если бы я использовал Object Streams, позволяя мне отправлять пользовательскую информацию.Дело в том, что ObjectOutPutStream не отправляет каждый раз для меня.На самом деле он имеет регулярную схему отправки каждый третий раз.То же самое относится и к сообщениям сервера, клиент получает их каждый третий раз.
Вот код:
Сторона клиента:
public void start() throws IOException{
output = new ObjectOutputStream(socket.getOutputStream());
if (thread == null) {
client = new ChatClientThread(this, socket);
thread = new Thread(this);
thread.start();
}
}
public void sendMessage(String msg){
try {
output.writeObject(new Message(msg));
output.flush();
}catch (IOException ioe) {
System.out.println("Sending error: " + ioe.getMessage());
stop();
}
}
Сторона сервера:
public void run() {
System.out.println("Server Thread " + ID + " running.");
while (true) {
try {
if(streamIn.readObject() instanceof Message){
System.out.println((Message)streamIn.readObject());
server.handleMessage(ID, (Message)streamIn.readObject());
}
}catch (IOException ex) {
System.out.println("Listening error: " + ex.getMessage());
server.remove(ID);
} catch (ClassNotFoundException ex) {
System.out.println("Class was not found");
}
}
}
public void open() throws IOException {
streamOut = new ObjectOutputStream(socket.getOutputStream());
streamIn = new ObjectInputStream(socket.getInputStream());
}
Есть идеи, почему это происходит?