Форум: "Сети";
Текущий архив: 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