Я пытаюсь реализовать сервер, и он делает что-то вроде этого, когда он получает сообщение:Как сервер может знать, когда сообщение, которое оно получает, происходит на самом деле?
try{
ObjectInputStream is = new ObjectInputStream(clientSocket.getInputStream());
String message = (String)is.readObject();
ActivateCommand(message,clientSocket);
is.close();
}
и ActivateCommand:
private void ActivateEwolfCommand(String msg, Socket clientSocket) throws IOException
{
ObjectOutputStream os = new ObjectOutputStream(clientSocket.getOutputStream());
Gson gsonObject = new Gson();
.
//code which makes a Json string
.
os.writeObject(json);
os.close();
}
теперь, когда я тестировал его с отправкой сообщения к локальному хозяину с тестом junit он работал. Но когда вы попытались подключиться к серверу с помощью клиента C#, клиент подключился, но сервер выбрал исключение EOF при достижении точки clientSocket.getInputStream(). Я предполагаю, что это происходит потому, что сервер не знал, когда сообщение должно закончиться, но я не знаю, действительно ли это так, и если да, то как я могу его исправить?
Как программист, вы можете передавать данные с помощью уникальной информации в конце. В точке получения укажите оператор if, проверяющий, попал ли код в конечные бит или нет! если он делает, то выйдите из цикла – doNotCheckMyBlog
, но, как вы можете видеть, я просто создаю String msg = (String) is.readObject(), и я получаю сообщение в строке var ... как я могу сказать, что он останавливается, когда это видит какой-то особый характер или что-то еще? –
Если вы хотите реализовать сервер Netty может оказаться полезным: http://netty.io –