Показать сообщение отдельно
Старый 06.08.2005, 00:00     # 2
Asgard
Member
 
Аватар для Asgard
 
Регистрация: 19.10.2004
Сообщения: 394

Asgard Популярный человек на этом форумеAsgard Популярный человек на этом форумеAsgard Популярный человек на этом форумеAsgard Популярный человек на этом форумеAsgard Популярный человек на этом форумеAsgard Популярный человек на этом форумеAsgard Популярный человек на этом форуме
Принцип такой: открываешь один соккет, записываешь реультаты его ответа в переменную, коннектишься к другому сокету и пишешь в него то, что у тебя в переменной. Вот пример на perl'e:
Код:
#/usr/bin/perl

use strict;
use socket;
use IO::Handle;

use constant HOST_FROM => gethostbyname('www.hostfrom.net');
use constant PORT_FROM => getservbyname('www-http', 'tcp');
use constant PROTOCOL => getprotobyname('tcp');

if(@ARGV < 2)
   die "Usage $0: <host> <port>"

my ($host_to, $port_to) = (gethostbyname($ARGV[0]), $ARGV[1]);
#подключаемся к первому сокету
socket(SOCK, AF_INET, SOCK_STREAM, PROTOCOL) or 
   die "can't create socket :(";
connect(SOCK, sockaddr_in(PORT_FROM, HOST_FROM)) or
   die "can't connect to remote socket";
SOCK->autoflush(1);
my $result = undef;

while(<SOCK>) { $result .= $_; }

# закрываем первый сокет, данные полученные из него
# хранятся в переменной $result
close SOCK;
#открываем новый сокет, в который мы будем записывать полученные
# ранее данные
socket(NEW_SOCK, AF_INET, SOCK_STREAM, PROTOCOL) or
   die "can't create second socket :(";
connect(NEW_SOCK, sockaddr_in($port_to, $host_to)) or 
   die"can't connect to second remote soccet :(";
# пишем данные в удалённый сокет
print NEW_SOCK $result;
#всё, дело сделано
close NEW_SOCK;
Asgard вне форума