语言入口:简体中文 | English | 北亚博客
 
    
 
北亚Linux数据恢复

首席工程师:张宇

手机:18600440055

座机:4006505646-801

传真:4006505646-809

Email:zy@datahf.net

地址:北京市海淀区永丰基地丰慧中路7号新材料创业大厦B座205室
QQ:点击这里给我发消息
当前位置:首页>>Linux修复知识>>Linux文件系统修复>>正文
Linux修复知识

socket交互阻塞问题

1.客户端用Perl,服务端用的是C
2.根据协议把字段都赋值,并通过pack进行组包
use strict;
use IO::Socket qw(:DEFAULT :crlf);
my $sock=IO::Socket::INET->new(PeerAddr => $server,
                               PeerPort => $port,
                               Proto    => 'tcp');
die "can't create socket: $@" unless defined $sock;

while(1)  #我想在循环中,多次发送和接收数据
{
  syswrite $sock,$data.CRLF;  #这行代码已经发给服务端c那边,且服务端也收到消息,并给客户端返回应答
  my $l=sysread(SOCK,$buff,4096))#但客户端没有打印出结果,但如果不加在while循环中,则可以打印结果,但打印的结果是服务端返回给我的消息体长度,没有打印出全部的返回结果,是什么原因?
如果使用send/recev函数会发生交互阻塞,但改成syswrite和sysread,还是会这样。
  print $l;

syswrite $sock,$data.CRLF;
my $l=sysread(SOCK,$buff,4096));
  print $l;

}
$sock->close or die $!;

来源: linux频道

上一篇:Linux下oracle安装
下一篇:没有了
JFS文件系统简介
XFS文件系统简介
Reiserfs文件系统简介
EXT3文件系统简介
常见Linux文件系统简介
GRUB简介与配置
LILO的使用和配置
Linux单用户模式维护系统
引导加载程序简介
重置Linux用户口令
  版权所有@北京北亚时代科技有限公司   京ICP备09039053号    
  总部电话:(010)82488636  中国·北京·海淀区中关村E世界C座8层879室               站点地图   联系我们  RSS阅读
ett