Linux - Could not bind socket to port... Address already i

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Linux - Could not bind socket to port... Address already i

Сообщение anvpro » 02.03.2010 22:07:13

Помогите кто чем сможет (но лучше примером успешной борьбы)
Использую Lazarus v 0.9.28.2 fpc 2.2.4 Linux Slackware 12.2
Любая попытка запустить программу с серверным сокетом на базе TTCPServer
а так же все сервера Indy indy-10.2.0.3 при активации сокета в успешно откомпилированной программе
выдают абсолютно одинаковую ошибку типа

exception at 08060F0C:
Could not bind socket to port 18888: Address already in use.

при чем, не важно какой порт и на каком адресе мы пытаемся создать, думал не хватает прав - под рутом тоже самое
думал косяк в fpc обновил его до 2.4.0
тоже самое...

хотя, собираю тот же самый проект под винды, запускаю - все работает...
кто-нибудь уже сталкивался с подобной проблемой?
anvpro
незнакомец
 
Сообщения: 3
Зарегистрирован: 13.10.2009 12:46:55

Re: Linux - Could not bind socket to port... Address already i

Сообщение Brainenjii » 02.03.2010 22:19:26

Подозреваю, что Вы биндите сокет под ipv6, а в системе - ipv4, или наоборот ^_^ По-крайней мере я сталкивался с похожим и проблема была именно в этом. Но очень советую отказаться от indy - с fpc оно иногда порождает странные и необъяснимые глюки. Или просто руки у меня такие ^_^
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Re: Linux - Could not bind socket to port... Address already i

Сообщение anvpro » 02.03.2010 22:27:51

Я вообще предчувствовал что глюка зарыта в поддержке ip шестой версии
и пытался indy указывавать ip v4
но что-то не помогало совсем - может не так указывал на самом деле

Самое смехотворное что у меня в wine все работает, а комплирую в линукс - ошибка
я в шоке :(
anvpro
незнакомец
 
Сообщения: 3
Зарегистрирован: 13.10.2009 12:46:55

Re: Linux - Could not bind socket to port... Address already i

Сообщение Brainenjii » 02.03.2010 22:56:50

Каким-то чудом после форматирования ж0ского один старый проект оказался среди спасённых, ещё с indy ^_^ Я это решал так
Код: Выделить всё
Constructor BServer.Build;
var
  SocketHandle: TIdSocketHandle;
Begin
  Inherited Create;
  SocketHandle := TIdSocketHandle.Create(Bindings);
  SocketHandle.IPVersion := Id_IPv6;
  SocketHandle.Port := 7667;
  DefaultPort := 7667;
  OnExecute := Execute;
  Active := TRUE;
End;
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 45

Рейтинг@Mail.ru