Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.03.2010, 23:30   #1
dyonysos
Пользователь
 
Регистрация: 24.08.2009
Сообщений: 45
Вопрос сокеты - ошибка 10013 (delphi)

при запуске программы из реестра читается значение порта который присваивается serversocket-у,потом serversocket активируется.
проблема в том что если такой порт уже открыт другой программой то вылетает такая ошибка:



подумал что можно при подобном случае увеличить значение port на единицу и снова попытатся активировать сервер:
Код:
procedure TForm1.ServerSocket1ClientError(Sender: TObject;
  Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer);
begin
  if ErrorCode = 10013 then begin
    serversocket1.Close;
    serversocket1.Port:=serversocket1.port+1;
    serversocket1.Open;
  end;
end;
но не помогает! в чем проблема?
если это неправильный подход то как по другому избежать этой ошибки?

Последний раз редактировалось dyonysos; 07.03.2010 в 23:35.
dyonysos вне форума Ответить с цитированием
Старый 08.03.2010, 20:57   #2
ImmortalAlexSan
Участник клуба
 
Аватар для ImmortalAlexSan
 
Регистрация: 13.01.2009
Сообщений: 1,353
По умолчанию

Ну... возможно вам нужно активировать обработчик ошибок (какие-то два английских слова перед частью кода и после неё). Если не изменяет память то эти два слова: exept и finally, но я могу ошибаться, ибо не профи и точно не помню И если это правильно, то возможно такой подход не подходит к сетевым приложениям.
"Тебе то может на меня и насрать, но твои глаза меня обожают!"
ImmortalAlexSan вне форума Ответить с цитированием
Старый 08.03.2010, 21:09   #3
W0LF
Форумчанин
 
Аватар для W0LF
 
Регистрация: 28.03.2008
Сообщений: 940
По умолчанию

Перед заданием порта, проверяйте его используется ли он уже или нет...
ImmortalAlexSan уже создал топик по этому поводу))
W0LF вне форума Ответить с цитированием
Старый 10.03.2010, 09:58   #4
Blourid
Форумчанин
 
Аватар для Blourid
 
Регистрация: 09.03.2010
Сообщений: 138
По умолчанию

Есть и еще вариант, фаер тоже блокирует порты, отключите на время фаерволл
Вчера
Blourid вне форума Ответить с цитированием
Старый 10.03.2010, 17:14   #5
ImmortalAlexSan
Участник клуба
 
Аватар для ImmortalAlexSan
 
Регистрация: 13.01.2009
Сообщений: 1,353
По умолчанию

Проблема не решена ещё? Если нет, то, dyonysos, покажите весь код программы пожалуйста.
"Тебе то может на меня и насрать, но твои глаза меня обожают!"
ImmortalAlexSan вне форума Ответить с цитированием
Старый 10.03.2010, 17:35   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

перед изменением состояния сокета обнулите переменную ErrorCode что будет означать что вы обработали ошибку(и не покажет ошибку)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сокеты в Delphi 2009 TzX Общие вопросы Delphi 11 09.02.2010 21:49
Это ошибка Delphi или моя ошибка??? bloodeagle Общие вопросы Delphi 3 12.11.2009 15:26
Сокеты в Delphi god110 Работа с сетью в Delphi 13 08.09.2009 11:20
Сокеты в Delphi Necro Работа с сетью в Delphi 11 24.04.2007 07:32
Достать текс из класса типа Afx:400000:4048:10013:0:0 klimov Win Api 3 17.12.2006 17:10