The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Отправка данных через socket Perl."
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Отправка данных через socket Perl."
Сообщение от Страусъ emailИскать по авторуВ закладки on 25-Мрт-04, 15:18  (MSK)
Доброе время!
Решил попробывать socket в Perl.
Списал пример:
use strict;
use Socket;
use Fcntl;
use Errno;

my $proto = getprotobyname('tcp');
socket(SOCK, PF_INET, SOCK_STREAM, $proto) or die "socket: $!";
my $sin = sockaddr_in(25, inet_aton('192.168.0.100'));
# bind можно опустить, тогда будет неявно вызван
# bind(SOCK, sockaddr_in(0, INADDR_ANY))
# Теперь переводим сокет в non-block mode
fcntl(SOCK, F_SETFL, O_NONBLOCK) or die "fcntl: $!";

unless (connect(SOCK, $sin)) {
     # Hекоторые системы возвращают EWOULDBLOCK вместо EINPROGRESS
     Errno::EINPROGRESS == $! or Errno::EWOULDBLOCK or
         die "connect: $!";

     vec(my $win = '', fileno(SOCK), 1) = 1;

     # Таймаут соединения - десять с половиной секунд
     unless (select(undef, $win, undef, 10.5)) {
         close (SOCK);
         die "Time is out!\n";
     }

     if (defined (my $ret = getsockopt(SOCK, SOL_SOCKET, SO_ERROR))) {
         die "connection failed: $!" if $! = unpack('i', $ret);
# Hе во всех системах поддерживается SO_ERROR
# fallback до getpeername
     } elsif (!getpeername(SOCK)) {
         die "connection failed: $!";
     }
}

fcntl(SOCK, F_SETFL, 0);
my $data=<SOCK>;
print $data;
print SOCK "helo server";

Данные получаю. А вот передать не удается. Пробывал еще короче скрипт - таже история.
Попробывал через set устанвливать размер буферов
my $opis = 0;
my $new_ret = pack('i',$opis);
setsockopt(SOCK, SOL_SOCKET, SO_SNDBUF, $new_ret);
setsockopt(SOCK, SOL_SOCKET, SO_RCVBUF, $new_ret);
все равно сервер ничего не получает.
Откройте тайну, пожалуйста, что проморгал?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Отправка данных через socket Perl."
Сообщение от Страусъ emailИскать по авторуВ закладки on 25-Мрт-04, 16:28  (MSK)
Ура!
Нашел.
Блин. Вот что значит пользоваться примера в тупую :)
  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру