LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: bgifu

socket编程connect error:connection refused!是不是需要开启哪个服务?

[复制链接]
发表于 2008-10-29 18:05:51 | 显示全部楼层
Post by bgifu;1901042
gentoo的资料还真是少啊。。。找一个ntsysv命令的都找不到。。。。。


您真会开玩笑,ntsysv是红帽系的工具吧……
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-29 20:24:34 | 显示全部楼层
我知道是rhel的,可是想找个类似的工具没有找到
gentoo这个系统太自主了,一切都是手动操作。
在google上面搜了半天的gentoo daytime-server都没有什么满意的结果,服务起来了,还是读不出数据。头疼啊头疼
回复 支持 反对

使用道具 举报

发表于 2008-10-30 09:17:38 | 显示全部楼层
当时比我们大一届的学生讲linux我好奇去听了一下,用的rh7(。。。)老师讲了一个命令 ll 别的什么也没说,我那个汗阿。今年我们开linux的课我一节课没去,
回复 支持 反对

使用道具 举报

发表于 2008-10-30 09:34:01 | 显示全部楼层
这不是UNP上的一个例子吗?出现上面的问题很明显是DaytimeServer没打开,接着往下看,下面一节会有 DaytimeServer 的实现代码,编译后运行就OK了。
回复 支持 反对

使用道具 举报

发表于 2008-10-30 09:37:59 | 显示全部楼层
你去给老师讲一下gentoo
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-30 18:34:30 | 显示全部楼层
系统自带的daytime-server怎么正常运行?有这方面的资料吗
我装了个fc,发现里面也是默认没有daytime-server。。。。
回复 支持 反对

使用道具 举报

发表于 2008-10-30 19:53:51 | 显示全部楼层
day-time 服务似乎是 xinetd 自带支持的,你启动 xinetd 看看。估计是因为这个服务非常简单,所以直接由 super daemon 支持了。http://www.linuxfromscratch.org/blfs/view/svn/server/xinetd.html 页面搜索 day-time 看看。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-30 21:23:49 | 显示全部楼层
感谢楼上的朋友,/etc/xinetd.d/里面确实有daytime-server,而且我已经将disable改成no了,代码测试也不会出现connection refused了,可是无法正常读出数据
下列是代码

  1. int
  2. main(int argc, char **argv)
  3. {
  4.         int                                        sockfd, n;
  5.         char                                recvline[MAXLINE + 1];
  6.         struct sockaddr_in        servaddr;

  7.         if (argc != 2)
  8.                 err_quit("usage: a.out <IPaddress>");

  9.         if ( (sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
  10.                 err_sys("socket error");

  11.         bzero(&servaddr, sizeof(servaddr));
  12.         servaddr.sin_family = AF_INET;
  13.         servaddr.sin_port   = htons(13);        /* daytime server */
  14.         if (inet_pton(AF_INET, argv[1], &servaddr.sin_addr) <= 0)
  15.                 err_quit("inet_pton error for %s", argv[1]);

  16.         if (connect(sockfd, (SA *) &servaddr, sizeof(servaddr)) < 0)
  17.                 err_sys("connect error");

  18.         while ( (n = read(sockfd, recvline, MAXLINE)) > 0) {
  19.                 recvline[n] = 0;        /* null terminate */
  20.                 if (fputs(recvline, stdout) == EOF)
  21.                         err_sys("fputs error");
  22.         }
  23.         if (n < 0)
  24.                 err_sys("read error");

  25.         exit(0);
  26. }
复制代码

其中的read返回为0,在aix和bsd上面测试都正常,但是就是linux上面返回为0,包括fc也是如此
回复 支持 反对

使用道具 举报

发表于 2008-10-30 22:57:07 | 显示全部楼层
我没有装 xinetd。我觉得你可以:
首先,用 telnet 连接 day-time 服务,确保它工作正常。
然后,用 tcpdump 察看服务器和客户端的通信细节。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表