Используйте модуль IO :: Socket :: INET .
Вы можете подключиться к порту на локальном хосте
$sock = IO::Socket::INET->new('127.0.0.1:2525');
или по другому адресу
$sock = IO::Socket::INET->new("host.example.com:6789");
В этих примерах предполагается, что Perl-программа будет клиентом, а вы написали сервер на C #. Если все наоборот, используйте модуль IO :: Select. Ниже приведен пример из его документации:
use IO::Select;
use IO::Socket;
$lsn = new IO::Socket::INET(Listen => 1, LocalPort => 8080);
$sel = new IO::Select( $lsn );
while (@ready = $sel->can_read) {
foreach $fh (@ready) {
if ($fh == $lsn) {
# Create a new socket
$new = $lsn->accept;
$sel->add($new);
}
else {
# Process socket
# Maybe we have finished with the socket
$sel->remove($fh);
$fh->close;
}
}
}
Используя этот код, вы затем подключитесь из C # к порту 8080 на локальном хосте.
Выбор порта в основном произвольный. Обе стороны должны договориться о порте рандеву, и вы хотите избежать портов ниже 1024. Независимо от того, подключаетесь ли вы к локальному хосту или другому адресу, определяется адресом, к которому привязан сервер. Для привязки к адресу, доступному в сети, измените приведенный выше код, чтобы использовать
$lsn = new IO::Socket::INET(Listen => 1, LocalAddr => "host.example.com:8080");
Отставание размером 1 (параметр Listen
) является необычным. Типичным размером является значение SOMAXCONN
от sys/socket.h
.