PDA

Просмотр полной версии : socket error 10053


Ren
03.11.2008, 16:32
пытаюсь сделать примитивного оог бота под свой сервер. Логин проходит, к гейм серверу коннектица, но при посылке какого либо пакета(в моем случае это protocolversion) ему вылетает этот эксепшн. Судя по описанию это значит что сервер закрывает соединение. Сервер птс ил. При коннекте на ява ил сервер эксепшн не возникает.
procedure TForm1.GameSocketConnect(Sender: TObject;
Socket: TCustomWinSocket);
var prot:longword;
size:word;
pck:string;
begin
prot:=746;
setlength(pck,7);
pck[3]:=chr(0);
size:=7;
move(size,pck[1],2);
move(prot,pck[4],4);
gamesocket.Socket.SendText(pck);<<тут
end;
Как это исправить?:\

xkor
03.11.2008, 16:57
посмотри в справке дельфи что означает этот код ошибки...

NLObP
03.11.2008, 17:12
10004 Операция блокирования прервана вызовом WSACancelBlockingCall.
10009 Предоставленный дескриптор файла неверен.
10013 Сделана попытка доступа к сокету методом, запрещенным правами доступа.
10014 Система обнаружила недопустимый указатель адреса при попытке использовать в вызове аргумент указателя.
10022 Получен недопустимый аргумент.
10024 Открыто слишком много сокетов.
10035 Операция на незаблокированном сокете не может быть завершена немедленно.
10036 Сейчас выполняется операция блокировки.
10037 На незаблокированном сокете сделана попытка выполнить операцию при наличии другой выполняемой операции.
10038 Сделана попытка выполнить операцию на объекте, не являющемся сокетом.
10039 В операции на сокете пропущен обязательный адрес.
10040 Сообщение, отправленное на сокет датаграмм, было больше, чем буфер внутренних сообщений или был превышен иной сетевой параметр. Также возможно, что буфер для принятия сообщения был меньше, чем размер сообщения.
10041 Протокол, указанный в вызове функции сокета, не поддерживает такую семантику для требуемого типа сокета.
10042 Для вызова getsockopt или setsockopt был указан неизвестный, недопустимый или неподдерживаемый параметр или уровень.
10043 Требуемый протокол не настроен в данной системе, или не существует его реализации.
10044 Поддержка указанного типа сокетов в этом семействе адресов отсутствует.
10045 Предпринятая операция не поддерживается для выбранного типа объекта.
10046 Данное семейство протоколов не настроено в системе, или оно не реализовано.
10047 Адрес несовместим с выбранным протоколом.
10048 Обычно разрешается одно использование адреса сокета (протокол/сетевой адрес/порт).
10049 Требуемый адрес для своего контекста неверен.
10050 Операция на сокете обнаружила отключение сети.
10051 Сделана попытка выполнить операцию на сокете при отключенной сети.
10052 Подключение было разорвано из-за ошибки во время выполнения операции.
10053 Программа на вашем хост-компьютере разорвала установленное подключение.
10054 Удаленный хост принудительно разорвал существующее подключение.
10055 Невозможно выполнить операцию на сокете, т.к. буфер слишком мал или очередь переполнена.
10056 Сделан запрос на подключение для уже подключенного сокета.
10057 Запрос на отправку или получение данных (when sending on a datagram socket using a sendto call) no address was supplied.
10058 Запрос на отправку или получение данных был запрещен, т.к. сокет уже отключен в данном направлении на основании прежней запроса на его отключение.
10059 Слишком много ссылок на некоторый ключевой объект.
10060 Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера.
10061 Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение.
10062 Не удается преобразовать имя.
10063 Компонент имени или все имя слишком длинно.
10064 Произошла ошибка операции на сокете, т.к. конечный хост выключен.
10065 Сделана попытка выполнить операцию на сокете для недоступного хоста.
10066 Нельзя удалить пустой каталог.
10067 Реализация Windows Sockets может иметь ограничения на количество одновременно выполняющихся приложений.
10068 Квота исчерпана.
10069 Дисковая квота исчерпана.
10070 Ссылка дескриптора файла более недоступна.
10071 Элемент локально недоступен.
10091 WSAStartup не может выполняться в данное время, т.к. недоступна основная система, используемая для работы сетевых служб .
10092 Указанная версия Windows Sockets не поддерживается.
10093 Или приложение не вызвало WSAStartup, или произошла ошибка в WSAStartup.
10101 Возвращено WSARecv или WSARecvFrom, чтобы показать - удаленная сторона инициировала правильную последовательность отключения.
10102 WSALookupServiceNext не может возвратить каких-либо дополнительных результатов.
10103 Был сделан вызов WSALookupServiceEnd, когда этот вызов еще обрабатывался. Обрабатываемый вызов был прерван.
10104 Недопустимая таблица вызова процедуры.
10105 Недопустимый поставщик услуг.
10106 Не удается загрузить или инициализировать нужного поставщика услуг.
10107 Произошла ошибка системного вызова, что недопустимо.
10108 Неизвестная служба. Эта служба отсутствует в указанном пространстве имен.
10109 Указанный класс не найден.
10110 WSALookupServiceNext не может возвратить каких-либо дополнительных результатов.
10111 Был сделан вызов WSALookupServiceEnd, когда этот вызов еще обрабатывался. Обрабатываемый вызов был прерван.
10112 Произошла ошибка запроса к базе данных, т.к. запрос был активно отвергнут.
11001 Этот хост неизвестен.
11002 Обычно - это временная ошибка, возникающая во время разрешения имени узла, и означающая, что локальный сервер не получил ответа от заслуживающего доверие сервера.
11003 При просмотре базы данных произошла неисправимая ошибка.
11004 Затребованное имя допустимо и оно найдено в базе данных, но для имени отсутствуют связанные с ним данные, которые были разрешены для него.
11005 Получен по меньшей мере один резерв.
11006 Получен по меньшей мере один путь.
11007 Отправители отсутствуют.
11008 Получатели отсутствуют.
11009 Резерв подтвержден.
11010 Произошла ошибка из-за недостатка ресурсов.
11011 Отвергнуто по административным причинам - неправильные учетные данные.
11012 Неизвестный или вызывающий конфликты стиль.
11013 Обнаружена проблема общего типа с буфером filterspec или providerspecific.
11014 Обнаружена проблема с частью "flowspec".
11015 Общая ошибка QOS.
11016 В спецификаторах потока найден недопустимый или нераспознанный тип службы.
11017 Недопустимый или нераспознанный спецификатор потока был найден в структуре QOS.
11018 Недопустимый буфер QOS, определяемый поставщиком.
11019 Использован недопустимый стиль фильтра QOS.
11020 Использован недопустимый стиль фильтра QOS.
11021 В FLOWDESCRIPTOR был задан неверный номер QOS FILTERSPEC.
11022 В определяемом поставщиком буфере QOS задан объект с неверным полем ObjectLength.
11023 В структуре QOS заданы неверные номера дескрипторов потока.
11024 В буфере QOS, задаваемом поставщиком, найден нераспознанный объект.
11025 В буфере QOS, задаваемом поставщиком, найден объект с недопустимой политикой.
11026 В списке дескрипторов потока обнаружен недопустимый дескриптор потока QOS.
11027 Недопустимый или нераспознанный спецификатор потока обнаружен в буфере QOS, определяемом поставщиком.
11028 Недопустимый FILTERSPEC обнаружен в буфере QOS, определяемом поставщиком.
11029 Недопустимый объект режима изменения формы обнаружен в буфере QOS, определяемом поставщиком.
11030 Недопустимый объект формирования уровня обнаружен в буфере QOS, определяемом поставщиком.
11031 Зарезервированный элемент политики обнаружен в буфере QOS, определяемом поставщиком.

Ren
03.11.2008, 17:14
WSAECONNABORTED

(10053)

Software caused connection abort.

An established connection was aborted by the software in your host machine, possibly due to a data transmission timeout or protocol error.

у меня очень сильное чувство что это сервер рвет соединение изза неправильного пакета:\ Только я хз как это проверить

xkor
03.11.2008, 18:50
мда пакет у тя странный, ты на С4 чтоль конектишся?

Добавлено через 1 минуту
746 это вроде протокол интерлюда а там после версии протокола в пакете твоём ещё константа 128 байт...
и вроде ещё id сессии гдето был, но эт не уверен

dmitry501
05.11.2008, 09:15
Конечно неверный пакет. На С4 длина пакета не 7 байт, а 263. И протокол должен быть 656 - 659.
Поэтому и соединение закрывает.
А на дурной яве прокатывало, так на то и ява.

xkor
05.11.2008, 11:11
да точно, константа не 128 байт а 256)

Ren
09.11.2008, 11:11
снова здрасте. Возникла еще 1 проблема. Иногда пакет от сервера имеет физический размер меньше чем записано в 1 и 2 байте, точнее это в 1 и 2 байте пишется число значительно большее чем размер пакета. При этом, если коннектить через l2phx(3.3.9), то такой проблемы нет. ЗЫ сервер интерлюдия а не с4

xkor
09.11.2008, 15:47
дык о том что пакеты могут приходить не целиком давно и много где говорилось, их надо склеивать или наоборот расклеивать если многовато пришло)