免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1530 | 回复: 4
打印 上一主题 下一主题

我的socket程序出了点小问题 急等高手~ [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-09-01 10:38 |只看该作者 |倒序浏览
我做的Socket的两个简单的测试程序 客户端和服务器  
问题就是:客户端只能接受一次服务器的信息,重新运行以后就无法收到了
问题原因是什么呢?  高手们帮我改下,优化一下程序吧
#!usr/bin/perl
#客户端

use IO::Handle;
use Socket;

$port=2001;
$host='10.0.0.191';
$packhost=inet_aton($host);
$address=sockaddr_in($port,$packhost);

socket(CLIENT,PF_INET,SOCK_STREAM,6);
connect(CLIENT,$address);
CLIENT->autoflush(1);  #跳过I/O代码进入缓存的步骤,直接输出。

$msg_in=<CLIENT>;
print "INmsg_in\n";
close CLIENT;
exit 1;

.....................................................................................

#!usr/bin/perl
#服务端

use IO::Handle;
use Socket;

$port=2001;
$address=sockaddr_in($port,INADDR_ANY);
socket(SERVER,PF_INET,SOCK_STREAM,6);
bind(SERVER,$address);
listen(SERVER,10);

while(1){
next unless (accept(CLIENT,SERVER));
CLIENT->autoflush(1);  #跳过I/O代码进入缓存的步骤,直接输出。
print CLIENT "WHAT DO YOU WANT?\n";
close CLIENT;}

close SERVER;
exit 1;

我想在他们里面加个sleep语句,应该怎么加呢?

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
2 [报告]
发表于 2006-09-01 15:04 |只看该作者
我刚才试过了,在我的机器上不管运行多少次都是对的。
你再找找别的原因。

论坛徽章:
0
3 [报告]
发表于 2006-09-01 15:39 |只看该作者
你把server关掉  重新开  再运行client  就接收不到信息了,  你一直开着server运行client无论多少次确实都管用,只要关一次再开,就不管用了

论坛徽章:
0
4 [报告]
发表于 2006-09-01 15:45 |只看该作者
原帖由 ┏.璇轉 于 2006-9-1 15:39 发表
你把server关掉  重新开  再运行client  就接收不到信息了,  你一直开着server运行client无论多少次确实都管用,只要关一次再开,就不管用了


没仔细看,不过建议你用IO::Socket并在new时加上这个参数:

Reuse     => 1,

它允许本地端口重用。

论坛徽章:
0
5 [报告]
发表于 2006-09-01 15:52 |只看该作者
谢谢你   
好的我试试先
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP