Как подтвердить получение данных перед закрытием сокета - PullRequest
0 голосов
/ 29 сентября 2019

У меня есть серверная клиентская программа, куда я отправляю данные с сервера, используя цикл while, метод inputtream.read () и метод outputtream.write ().Я то же самое в клиенте, но проблема возникает, когда сервер отправляет данные, но закрывает сокет, прежде чем клиент сможет их получить.Я использовал outputtream.flush () в конце цикла while на сервере и socket.shutdownoutput () после сброса.Но клиент не может получить данные даже после сброса потока ... Я думаю, возможно, это потому, что клиент не смог прочитать данные до того, как сервер вызвал метод shutdownoutput ... Мне нужно решение, где я только shutdownoutputузнав, что все данные в потоке были прочитаны.Откуда я знаю, что это было прочитано ??Может кто-нибудь мне помочь??И спасибо всем, кто пытается помочь ». Все ответы приветствуются.

Псевдокод сервера:

While((len=fileinpustream.read(buff))!=-1)
{
socketoutputstream. Write(buff, 0,len); 
}
Socketoutputstream. Flush();
socket. Shutdownoutput();

Псевдокод на стороне клиента:

While((len=socketinpustream.read(buff))!=-1)
{
Fileoutputstream. Write(buff, 0,len); 
}
Fileoutputstream. Flush();
...