Что означает конец файла в сокете? - PullRequest
2 голосов
/ 24 августа 2009

Использование Action Script 3 в Flex Builder 3.

При обработке события SOCKET_DATA я иногда, по-видимому, наугад, получаю "Ошибка № 2030: обнаружен конец файла" при вызове socket.readInt (). Я не понимаю, что означает эта ошибка, поскольку я не читаю файл? Я немного незнаком с розетками. Спасибо.

Ответы [ 2 ]

7 голосов
/ 24 августа 2009

Ошибка конца файла обычно означает, что другая сторона сокета закрыла свое соединение, IIRC.

Причина того, что файл конца файла заключается в том, что на очень низком уровне внутри программы файл на диске и сокет представлены числом - дескриптор файла - что ОС преобразуется в объект, представляющий файл, сокет, канал или что-то еще.

Обычно, вы можете избежать такого рода ошибок, проверив, читаете ли вы только EOF. Если вы прочитали EOF и попытаетесь снова прочитать из сокета / файла, вы получите ошибку EOF.


Обновление: Согласно документации ActionScript 9.0 , вы действительно получаете событие закрытия, если другой конец закрывает сокет.
3 голосов
/ 24 августа 2009

при считывании с закрытого сокета вы получите: Error #2002: Operation attempted on invalid socket.

ошибки конца файла обычно возникают в любых потоковых потоках, если вы прочитали больше байтов, чем доступно ... это касается файлов, сокетов и т. Д. ... в случае флэш-памяти это происходит при чтении из Socket или ByteArray и, может быть, даже в других случаях ...

TCP / IP основан на пакетах, но эмулирует поток ... таким образом, вы можете считывать только те данные из потока, которые уже были отправлены вам с пакетами TCP ... проверьте Socket::bytesAvailable, чтобы узнать, сколько байты в настоящее время доступны ... всегда имейте в виду, что данные, которые вы записываете в сокет за одну операцию, могут поступать в нескольких пакетах, каждый из которых очень вероятно вызывает флэш-проигрыватель для socketData событий ...

Greetz

back2dos

...