Perl——socket模块
时间:2006-05-03 来源:webview
#socket编程
use Socket;
use FileHandle;
use File::Basename; my $ss;
my $str="action=$action&tv_id=$tv_id";
my $strlen=length($str);
#print "$strlen\n";
exit unless connectTCP(\$ss,$tv_ip,"80");
my $info="http://$tv_ip/?cmdlen=$strlen&action=$action&tv_id=$tv_id\n";
#print "$info\n";
my $cnt=send($ss,$info,length($info),0);
#print $cnt; $cnt=<$ss>; print("<input type=\"hidden\" name=\"recevtvnum\" value=$cnt >");
#exit; sub connectTCP
{
my ($socket , $rhost_name , $service)=@_;
connectsocket($socket,$rhost_name,$service,"tcp");
1;
} sub connectUDP
{
my ($socket , $rhost_name , $service)=@_;
connectsocket($socket,$rhost_name,$service,"udp");
1;
} sub connectsocket
{
my ($socket,$rhost_name,$service,$proto_name)=@_;
my ($port,$SOCK_TYPE,$protocol,$local_socket,$remoteip,$remote_socket,$remote_quad); $SOCK_TYPE = $proto_name eq "tcp" ? SOCK_STREAM : SOCK_DGRAM;
$protocol = getprotobyname($proto_name); # create a socket
return undef if(! defined(socket($$socket,PF_INET,$SOCK_TYPE,$protocol))); # bind the socket to local socket address
#$local_socket=sockaddr_in(0,inet_aton($localhost));
# return undef if(! defined(bind($socket,$local_socket))); # get port
if($service=~/^\d+$/)
{
$port = $service;
}
else
{
$port=(getservbyname($service,$proto_name))[2];
return undef unless $port;
} # attemp to connect remote address
if(defined(netcam_tools::isvalidhostname($rhost_name)))
{
$remoteip=inet_aton($rhost_name);
$remote_socket=sockaddr_in($port,$remoteip);
}
else
{
$remoteip=gethostbyname($rhost_name);
$remote_socket=sockaddr_in($port,$remoteip);
} if(! defined(connect($$socket,$remote_socket)))
{
#printf $!;
to_socketerrorpage("视频矩阵连接失败,请检查网络是否正常");
exit;
#return undef;
} $remote_quad=inet_ntoa($remoteip);
#print("$rhost_name $remote_quad:$port connect ok\n");
1;
}
use Socket;
use FileHandle;
use File::Basename; my $ss;
my $str="action=$action&tv_id=$tv_id";
my $strlen=length($str);
#print "$strlen\n";
exit unless connectTCP(\$ss,$tv_ip,"80");
my $info="http://$tv_ip/?cmdlen=$strlen&action=$action&tv_id=$tv_id\n";
#print "$info\n";
my $cnt=send($ss,$info,length($info),0);
#print $cnt; $cnt=<$ss>; print("<input type=\"hidden\" name=\"recevtvnum\" value=$cnt >");
#exit; sub connectTCP
{
my ($socket , $rhost_name , $service)=@_;
connectsocket($socket,$rhost_name,$service,"tcp");
1;
} sub connectUDP
{
my ($socket , $rhost_name , $service)=@_;
connectsocket($socket,$rhost_name,$service,"udp");
1;
} sub connectsocket
{
my ($socket,$rhost_name,$service,$proto_name)=@_;
my ($port,$SOCK_TYPE,$protocol,$local_socket,$remoteip,$remote_socket,$remote_quad); $SOCK_TYPE = $proto_name eq "tcp" ? SOCK_STREAM : SOCK_DGRAM;
$protocol = getprotobyname($proto_name); # create a socket
return undef if(! defined(socket($$socket,PF_INET,$SOCK_TYPE,$protocol))); # bind the socket to local socket address
#$local_socket=sockaddr_in(0,inet_aton($localhost));
# return undef if(! defined(bind($socket,$local_socket))); # get port
if($service=~/^\d+$/)
{
$port = $service;
}
else
{
$port=(getservbyname($service,$proto_name))[2];
return undef unless $port;
} # attemp to connect remote address
if(defined(netcam_tools::isvalidhostname($rhost_name)))
{
$remoteip=inet_aton($rhost_name);
$remote_socket=sockaddr_in($port,$remoteip);
}
else
{
$remoteip=gethostbyname($rhost_name);
$remote_socket=sockaddr_in($port,$remoteip);
} if(! defined(connect($$socket,$remote_socket)))
{
#printf $!;
to_socketerrorpage("视频矩阵连接失败,请检查网络是否正常");
exit;
#return undef;
} $remote_quad=inet_ntoa($remoteip);
#print("$rhost_name $remote_quad:$port connect ok\n");
1;
}
相关阅读 更多 +