专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Perl/Python

perl网络编程中关于接受数据的疑惑,该如何处理

发布时间:2011-06-29 20:03:56 文章来源:www.iduyao.cn 采编人员:星星草
perl网络编程中关于接受数据的疑惑
接受了一个套接字的连接以后,为什么传入的数据读不出来??代码如下:

use   strict;
use   IO::Socket;
use   IO::Handle;
use   constant   MY_PORT   =>   12007;


#构建Socket套接字
my   $port   =   MY_PORT;
my   $sock   =   IO::Socket::INET-> new(Listen         =>     20,
  LocalPort   =>   $port,
                                                                  Timeout       =>   60*60,
  Reuse           =>   1)
      or   die   "Cannot   create   Listening   socket:   $!\n ";
while(1)
{
        next   unless   my   $session   =   $sock-> accept;
        my   $peer   =   gethostbyaddr($session-> peeraddr,   AF_INET)   ||
$session-> peerhost;
        my   $port   =   $session-> peerport;
        print   $port,   "\n ";
        print   $peer,   "\n ";
        print   <$session> ;
        close   $session;  
}
close   $sock;
打印了一下$!诊断了一下,说是Bad   file   descriptor
客户端是用C   语言写的,代码也贴上来吧


#include   "stdafx.h "
#include   "winsock2.h "
#include   <malloc.h>
#define   USERPORT   12007
#define   MAJOR_VERSION 1
#define   MINOR_VERSION 2
#define   WSA_MAKEWORD(x,y)     ((y)*256+(x))

int   main(int   argc,   char*   argv[])
{
char   buf[1024];
// struct   sockaddr_in   client;
struct   sockaddr_in   server;
struct   hostent   FAR   *   host;
int   Status;
SOCKET   s;
int   ns;
int   namelen;
WORD wMajorVersion,   wMinorVersion;
LPWSADATA lpmyWSAData;
WORD   VersionReqd;
wMajorVersion   =   MAJOR_VERSION;
wMinorVersion   =   MINOR_VERSION;
VersionReqd   =   WSA_MAKEWORD(wMajorVersion,wMinorVersion);

lpmyWSAData   =   (LPWSADATA)malloc(sizeof(WSADATA));
Status   =   WSAStartup(VersionReqd,   lpmyWSAData);
if   ((s=socket(AF_INET,   SOCK_STREAM,   0)) <0)
{
printf( "Socket() ");
return   -1;
}
host   =   gethostbyname( "Yinth ");

if   (host   ==   NULL)
{
printf( "No   host   machine ");
return   -1;
}
ZeroMemory(&server,   sizeof(server));
memset(&server, '\0 ',   sizeof   (struct   sockaddr_in));
memcpy((char     FAR   *)&server.sin_addr,(char     FAR   *)host-> h_addr,host-> h_length);
server.sin_family   =   host-> h_addrtype;
server.sin_port   =   htons(USERPORT);

printf( "请输入: ");
char   str[256];
gets(str);
  connect(s,   (struct   sockaddr   FAR   *)&server,   sizeof(server));
int   i   =   send(s,   str,   sizeof(str),MSG_OOB);
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: