Попытка получить работу сокетов Java. Вопрос в следующем: что вы можете делать одновременно, если используете Java API сокетов, и что происходит, если мы отправляем и читаем данные с некоторой задержкой?Проблемы с синхронизацией с сокетами Java I/O
READ & НАПИШИТЕ сразу. Если один сокет-клиент подключен к одному серверу spetch, могут ли они одновременно читать и писать? Насколько я понимаю, протокол TCP является полнодуплексным, поэтому теоретически сокет должен уметь читать и писать на одном, но мы должны создать два потока для бот-клиента и сервера. Я прав?
ЗАПИСЬ НА N клиентов одновременно. Если несколько сокетов-клиентов, подключенных к одному сокет-серверу, могут ли сервер читать несколько клиентов в один момент, может ли сервер сразу написать нескольким клиентам? Если максимально возможная физическая скорость сети NetworkCard составляет 1 кбайт/с и подключено 5 клиентов, с какой скоростью можно писать один клиент?
Как я могу реализовать последовательную отправку данных в обоих направлениях? Я имею в виду, что я хочу отправить N байтов от сервера к клиенту, затем M байтов от клиента к серверу, затем N от сервера к клиенту и т. Д. Проблема в том, что какая-либо из двух сторон что-то написала на канале, другая сторона остановится считывая эти данные (read() == -1), только если канал закрыт, что означает, что мы не можем его повторно использовать и должны открыть другое соединение. Или, может быть, мы должны поместить читателей и писателей в разные темы, которые выполняют свою работу с read() и write(), пока соединение не будет закрыто?
Представьте, что у нас есть задержка между вызовом write(); flush() с одной стороны и вызов read() с другой стороны. Во время задержки - где будут храниться письменные данные? Будет ли оно передано? Каков максимальный размер этих «задержанных» данных для хранения где-то «между»?
Надеюсь, вы найдете того, кто может ответить на ваш вопрос. Из-за его объема потребуется много времени. В двух словах вы спрашиваете о параллелизме потоков (помните, что один поток может делать только одну вещь за раз), а также то, как «Socket» ведет себя в определенных случаях, зависящих от платформы. Я слишком ленив, чтобы написать все. :) – MadConan
Еще спасибо за попытку, MadConan. Конечно, я сам найду информацию о параллелизме, но можете ли вы порекомендовать что-то прочитать о Java-сети? – KutaBeach