![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как посадить Server на нужную сетевую карту.
olegNik © (2008-03-18 09:03:00)У меня три сетевухи.
При Server.active := true сервер выбирает не ту что мне нужно, скажим 192.168.5.1. Подскажите как посадить его на соседнюю с IP 192.168.7.1. И вообще чем компанент руководствует когда на компе более одной сетевухи?
Сергей М. (2008-03-27 10:07:00) [1]
> kami (26.03.08 09:58) [8]
Не надо курочить генофонд)
Все гораздо проще - перехватываешь локально вызов bind() и подставляешь ей требуемый тебе второй параметр.
bind() в данном случае вызывается только для слушающего гнезда в составе TServerSocket, режим (non-blocking или thread-blocking) значения не имеет.
Polevi (2008-03-27 08:34:00) [2]работать будет
kami (2008-03-26 10:01:00) [3]понятно, что это только для асинхронных сокетов, но именно они меня и интересуют :)
kami (2008-03-26 09:58:00) [4]
> для TServerSocket никак
А если внести изменения в генофонд (не глобально, а положив ScktComp.pas в папку с проектом):
1. вынести свойство address в published TServerSocket
2. в TCustomWinSocket.AsyncInitSocket
case FLookupState of??
lsIdle:
begin
if not Client then
begin
FLookupState := lsLookupAddress;
FAddr.sin_addr.S_addr := inet_addr(PChar(Address));// раньше было INADDR_ANY
Какими граблями это может грозить?
Reindeer Moss Eater (2008-03-18 14:37:00) [5]> А еще было бы классно получить список IP всех сетевух на
> одном компе
А еще класснее получить список не сетевух, а сетевых интерфейсов.
Григорьев Антон (2008-03-18 10:22:00) [6]
> А еще было бы классно получить список IP всех сетевух на
> одном компе
http://msdn2.microsoft.com/en-us/library/ms738524.aspx
Сергей М. (2008-03-18 10:18:00) [7]
> есть выход?
>
Есть.
TIdTCPServer вместо TServerSocket
У него есть св-во Bindings, которое как раз и отвечает за то что тебе нужно
olegNik (2008-03-18 10:17:00) [8]
> для TServerSocket никак
А есть выход?
Polevi (2008-03-18 10:06:00) [9]для TServerSocket никак
olegNik (2008-03-18 09:39:00) [10]компонент TServerSocket
А еще было бы классно получить список IP всех сетевух на одном компе.
Григорьев Антон (2008-03-18 09:08:00) [11]Для начала неплохо бы уточнить, что это у вас за компонент такой - Server. Потому что если явно не задавать адрес, то при наличии нескольких интерфейсов серверный сокет садится сразу на все, чтобы он сел только на один, его надо специально ограничивать. Поэтому нужно знать, что за компонент вы используете, чтобы понять, как именно он вводит это ограничение.