У меня есть асинхронный метод чтения ...Как узнать, когда заканчивается чтение асинхронного сокета?
private void read(IAsyncResult ar) {
//Get the Server State Object
ServerState state = (ServerState)ar.AsyncState;
//read from the socket
int readCount = state.socket.EndReceive(ar);
//check if reading is done, move on if so, trigger another read if not
if (readCount > 0) {
//purge the buffer and start another read
state.purgeBuffer();
state.socket.BeginReceive(state.buffer, 0, ServerState.bufferSize, 0, new AsyncCallback(read), state);
}
else {
//all bytes have been read, dispatch the message
dispatch(state);
}
}
Проблема, которую я имею, что чтения только 0, если соединение закрывается. Как я могу сказать, это конец этого сообщения и передать данные диспетчеру, оставив сокет открытым, чтобы принимать новые сообщения.
Спасибо!
Так что мне нужно отправить длину сообщения при попрошайничестве сообщения, чтобы сообщить, когда сообщение будет завершено? – Dabloons
Именно это. Без этого у вас есть бесконечный поток данных, таких как аудиопотоки в потоках интернет-радио. – BlueM