У меня есть следующее клиентское приложение для сокетов Java, которое отправляет ту же строку на сервер сокетов:
import java.net.*;
import java.io.*;
public class ServerClient {
public static void main(String[] args) throws IOException {
System.out.println("Starting a socket server client...");
Socket client = new Socket("XXX.X.XXX.XX", 12001);
BufferedOutputStream stream = new BufferedOutputStream(client.getOutputStream());
String message = "ABC";
BufferedReader inputReader = new BufferedReader(new InputStreamReader(System.in));
String input = null;
while ( true ) {
System.out.print("Would you like to send a message to Server? ");
input = inputReader.readLine();
if ( !input.equals("Y") ) break;
System.out.println("Message to send: " + message);
System.out.println("Message length is: " + message.length());
byte[] messageBytes = message.getBytes("US-ASCII");
stream.write(messageBytes, 0, messageBytes.length);
stream.flush();
}
System.out.println("Shutting down socket server client...");
stream.close();
client.close();
inputReader.close();
}
}
При первом отправлении сообщения сервер получает сообщение; однако каждый раз, когда я пытаюсь отправить это сообщение, сервер ничего не получает. Сообщение просто исчезает. Я успешно пишу в сокет (без исключений), но с другой стороны канала ничего не происходит (или мне так сказали).
У меня нет доступа к серверному приложению, журналам или коду, поэтому мне интересно, есть ли какой-нибудь подход, который вы можете порекомендовать выяснить, почему сервер не получает последующие сообщения. Любые идеи будут с благодарностью!
Разъяснение :
Новые строки не ожидаются сервером; в противном случае, как бы он получил сообщение в первый раз? В качестве метода проб и ошибок я попытался отправить символы '\ n' и "\ r \ n" и 0x00 в конце строки - и все безуспешно.
Я думал, что очистка была проблемой, поэтому я попробовал различные классы outputtream (PrintStream, PrintWriter, FilterOutputStream), но все еще сталкивался с точно такими же проблемами. Тогда, если «промывка» является проблемой, как она работает в первый раз?