Единственное различие между ними состоит в том, что writeUTFBytes()
не предшествует сообщению с длиной строки (Ошибка RangeError заключается в том, что 65535 - это наибольшее число, которое вы можете сохранить в 16 битах)
То, где вы будете использовать один над другим, зависит от того, что вы делаете. Например, я использую writeUTFBytes()
при копировании объекта XML для сжатия. В этом случае мне не важна длина строки, и это добавит в код что-то дополнительное.
writeUTF()
может быть полезно, если вы пишете потоковый / сетевой сервер, где, приписывая длину сообщения к сообщению, вы знаете, сколько байтов должно быть передано на другом конце до конца сообщения. например, у меня есть 200 байтов сообщения. Я прочитал длину (16-разрядное целое число), которая говорит мне, что сообщение составляет 100 байтов. Я читаю 100 байтов и знаю, что это полное сообщение. Все после - другое сообщение. Если бы длина сообщения говорила, что сообщение составляет 300 байтов, то я бы знал, что мне придется немного подождать, прежде чем я получу полное сообщение.