Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.07.04;
Скачать: CL | DM;

Вниз

Две сетевые карты   Найти похожие ветки 

 
Ozone ©   (2004-05-09 09:04) [0]

Вообщем, на компьютере стоят 2 сетевые карточки с разными IP соответственно.
Как сделать так, чтобы один клиент установленный на этой машине подключался к серверу под одним IP, а другой клиент под другим?

Возможно ли это вообще?

Зпасибо за любую помощь.


 
-=Rezya=-   (2004-05-09 09:36) [1]

Да возможно. Так как в Unix возможно формирование соединителя без IP-адресов, а для практической работы они нужны, имеется оператор bind, который позволяет присвоить определенный адрес заданному соединителю:

r=bind(s, const struct socketaddr far*name, int namelen),

где s - целочисленный код дескриптора, параметр name (идентификатор локального адреса) обычно (для Интернет) содержит три величины: IP-адрес ЭВМ, код протокольного набора, номер порта, который определяет характер приложения

Цитата из http://book.itep.ru/7/sock_71.htm


 
Ozone ©   (2004-05-09 09:58) [2]

-=Rezya=-   (09.05.04 09:36) [1]

Мне бы Windows ... :-(


 
Mentat   (2004-05-09 11:19) [3]

Смотри на Indy компоненты. Там есть Bindings - они отвечают за это.


 
-=Rezya=-   (2004-05-09 11:25) [4]

Это и есть Windows. Т.е. Socket-ы используются как в Unix так и Windows. При помощи библиотеки Winsock. Вот пример элементарного  Bind-а.

Uses winsock,......;//или winsock2 его можно скачать отсюда http://home.earthlink.net/~akonshin/files/winsock2.zip
var
SAData:TWSAData;
Sock:TSocket;
Addr:sockaddr_in;
ApAddres:string;
.........
begin
WSAStartup(MAKEWORD(2,2), SAData);
Sock:=Socket(Pf_Inet,SOCK_RAW,IPPROTO_IP);
If Sock=Invalid_Socket then begin Showmessage("error-"+inttostr(wsagetlasterror)); exit; end;

Addr.sin_family :=AF_INET;
Addr.sin_port:=htons(Any_port);//Тот порт что тебе нужен
Addr.sin_addr.s_addr :=inet_addr(PChar(ApAddres));//ip адрес тот который ты хочешь забиндить

if bind(Sock, @Addr, SizeOf(Addr)) <> 0 then begin showmessage("error-"+inttostr(wsagetlasterror); exit; end;


 
-=Rezya=-   (2004-05-09 11:29) [5]

Ой не большая поправка
в строчке
Sock:=Socket(Pf_Inet,SOCK_RAW,IPPROTO_IP);
SOCK_RAW, для твоих целей, надо поменять на SOCK_STREAM.


 
Ozone ©   (2004-05-09 11:40) [6]

Спасибо, попробую заюзать.


 
Ozone ©   (2004-05-09 11:46) [7]

Mentat   (09.05.04 11:19) [3]

Ничего подобного не нашел...
Можешь сказать как компонент назывется?


 
Ozone ©   (2004-05-11 10:31) [8]

Мастера, подскажите, что за Bindings, которые используются в Indy?


 
-=Rezya=-   (2004-05-11 10:38) [9]

А чем тебя Работа с WinSock не устраивает?


 
Ozone ©   (2004-05-11 10:47) [10]

-=Rezya=-   (11.05.04 10:38) [9]

Просто дело в том, что в программе я использую Indy, и переходить на что-то "новое" не хотелось бы.

ЗЫ: да и к тому же я с WinSock"ом никогда не работал ... :-(


 
Ozone ©   (2004-05-11 11:15) [11]

-=Rezya=-   (09.05.04 11:25) [4]

Что-то мне не совсем ястно (по коду), на какой адрес пытаемся подключиться?


 
-=Rezya=-   (2004-05-11 11:20) [12]


> на какой адрес пытаемся подключиться?

??????????


 
Ozone ©   (2004-05-11 11:28) [13]

Всем спасибо. Во всем разобрался.


 
Ozone ©   (2004-05-11 11:28) [14]

-=Rezya=-  

Спасибо.



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

Текущий архив: 2004.07.04;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.059 c
9-1063795314
Destroyer
2003-09-17 14:41
2004.07.04
Спрайты...


14-1086741817
begin
2004-06-09 04:43
2004.07.04
Помогите нач. программисту !!!


4-1085150163
Bent
2004-05-21 18:36
2004.07.04
передать при запуске потока


1-1087724542
M@verick
2004-06-20 13:42
2004.07.04
Добрый день всем. У меня при запуске отладчика выскакивает


3-1086599646
АлекСандр
2004-06-07 13:14
2004.07.04
Как обработать бланк опроса