Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.10.05;
Скачать: [xml.tar.bz2];

Вниз

Error 5 при вызове функции Bind   Найти похожие ветки 

 
Alral ©   (2008-08-21 01:28) [0]

Здравствуйте.
У меня вопрос: в моей программе функция Bind возвращает ошибку. При этом функция WSAGetLastError возвращает ошибку 5. Насколько я знаю, это ошибка не WinSock. Почему она может вызываться в данном случае?
Спасибо.
Александр


 
brother ©   (2008-08-21 04:53) [1]

какие вопросы могут быть без кода? пока, ошибка в 17 строке...


 
sniknik ©   (2008-08-21 08:23) [2]

> возвращает ошибку 5
отказано в доступе


 
Сергей М. ©   (2008-08-21 08:28) [3]

Значит Bind возвращает не ошибку.


 
Alral ©   (2008-08-22 00:43) [4]


> Сергей М. ©   (21.08.08 08:28) [3]


Простите, а что же тогда?

Код:


//Заполняю SockAddr_In
LocalAddress.sin_family:=AF_INET;
LocalAddress.sin_port:=HToNs(55555);
LocalAddress.sin_addr.S_addr:=HToNl(InAddr_Any);

 //связываю сокет функцией bind
 if Bind(scListen, LocalAddress, SizeOf(LocalAddress))=SOCKET_ERROR then begin
  mInfo.Lines.Add(TimeToStr(GetTime)+"*Error binding the socket with local address");
  mInfo.Lines.Add(TestError(WSAGetLastError));
  CloseSocket(scListen);
  Exit;
 end;
 mInfo.Lines.Add(TimeToStr(GetTime)+"*Socket bound with local address");

//функция обработки ошибок
function TfMain.TestError(ErrorCode: Integer): String;
begin
case ErrorCode of
 10004: Result:="Error 10004: Interrupted function call";
 ...
 11001: Result:="Error 11001: Host not found"
else
 Result:="Error "+IntToStr(ErrorCode)+": Unknown error";
end;
end;


Функция возвращает "Error 5: Unknown error"


 
Сергей М. ©   (2008-08-22 08:47) [5]

Хм ..

А ты случаем не сниффер сочиняешь ?


 
sniknik ©   (2008-08-22 10:46) [6]

> //функция обработки ошибок
нет слов. там что же все 997 (11001 - 10004) строк расписаны? а того что нужно нет... какая ирония.

заменяется на
function TfMain.TestError(ErrorCode: Integer): String;
begin
 Result:="Error "+IntToStr(ErrorCode)+": "+SysErrorMessage(ErrorCode);
end;


 
Alral ©   (2008-08-22 14:51) [7]


> Сергей М. ©   (22.08.08 08:47) [5]


Нет. Просто тестовый сервер.


> sniknik ©   (22.08.08 10:46) [6]


Далеко не всё, только то, что посчитал вероятным (чтобы постоянно не бегать в MSDN). А то что нужно я не нашёл (то, что это File access denied, я знаю, но связь с WinSock найти не могу).


 
Сергей М. ©   (2008-08-22 15:02) [8]

А почему не указал ОС в топике ?


 
sniknik ©   (2008-08-22 15:09) [9]

> Далеко не всё, только то, что посчитал вероятным
смысл считать вероятности, и делать криво, если получить все возможное можно гораздо меньшими усилиями, тратя меньше ресурсов, + с локализацией. см. [6].

> то, что это File access denied, я знаю
причем тут файл? это см. [2], к чему конкретно это по контексту.


 
Сергей М. ©   (2008-08-22 15:16) [10]


> то, что это File access denied, я знаю, но связь с WinSock
> найти не могу


Связь вообще-то имеется.

Хэндл сокета, при определенных условиях, можно и должно считать файловым дескриптором.

Твои или не твои это условия - тебе знать лучше)

Ты ведь метнул огрызок кода, а нам не ведомо, как ты собрался работать с транспортом ..


 
Alral ©   (2008-08-22 16:13) [11]


> Сергей М. ©   (22.08.08 15:16) [10]


Всё уже понял, только что заметил у себя глупейшую ошибку...
Спасибо что указали на сокет.


> sniknik ©   (22.08.08 15:09) [9]


Когда всё это делал, не знал про SysErrorMessage. Отдельное спасибо за [6].


 
Сергей М. ©   (2008-08-22 16:16) [12]


> заметил у себя глупейшую ошибку


Показал бь уж ее достопочтенной публике)

Мало ли кто еще эти грабли испытать захочет)


 
Alral ©   (2008-08-22 16:35) [13]

Это даже не ошибка, а скорее, опечатка.
Глупейшим образом забыл присвоить переменной сокет. После этого этот самый несуществующий сокет пытался привязать с использованием Bind.


 
Сергей М. ©   (2008-08-22 16:52) [14]


> Alral ©   (22.08.08 16:35) [13]


Опечаток в приведенном коде не видно ...
Все вроде бы корректно и ""благопристойно" ..


 
Alral ©   (2008-08-22 17:07) [15]

В том то и дело, что выше. В функции Socket. Нашёл благодаря тому, что вы напомнили о Handle сокета.:

> Сергей М. ©   (22.08.08 15:16) [10]



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2008.10.05;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.006 c
11-1194195955
Elec3C
2007-11-04 20:05
2008.10.05
OpenSaveDialog и CreateProcess


15-1218153220
Украинец
2008-08-08 03:53
2008.10.05
Delphi и Gecko


3-1207289402
ganda
2008-04-04 10:10
2008.10.05
Сжатие размера БД времени от времени


15-1218711018
Vlad Oshin
2008-08-14 14:50
2008.10.05
Об именах. Вот зачем так делать, да еще в пример ставить.


2-1219848090
fokas
2008-08-27 18:41
2008.10.05
Передача управление стартовой формой процедурам модуля





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский