文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Perl——socket模块

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;
}
相关阅读 更多 +
排行榜 更多 +
太空飞船终极攻击

太空飞船终极攻击

飞行射击 下载
化作星辰

化作星辰

飞行射击 下载
枪战火柴人中文版

枪战火柴人中文版

飞行射击 下载