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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.023 c
3-1086623789
SH
2004-06-07 19:56
2004.07.04
Paradox на любой машине


3-1086285323
hardclubber
2004-06-03 21:55
2004.07.04
Ошибка с кодировками


1-1087327696
Ivan K
2004-06-15 23:28
2004.07.04
Перевод кодировки в тексте


8-1080640978
Dysan
2004-03-30 14:02
2004.07.04
как проиграть avi из ресурса


1-1087801853
GrayFace
2004-06-21 11:10
2004.07.04
Как работать с интерфейсами?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский