LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 922|回复: 10

调试网络程序!

[复制链接]
发表于 2004-3-23 09:40:49 | 显示全部楼层 |阅读模式

  1. #include <stdio.h>
  2. #include <unistd.h>
  3. #include <sys/socket.h>
  4. #include <sys/types.h>
  5. #include <netinet/in.h>
  6. #include <netdb.h>

  7. #define MAXLINE 4096       

  8. int
  9. main(int argc, char **argv)
  10. {
  11.         int        sockfd, n;
  12.         char        recvline[MAXLINE+1];
  13.         struct sockaddr_in        servaddr;
  14.        
  15.         if (argc !=2)
  16.                 printf("usage: a.out<IP address>");
  17.        
  18.         if ((sockfd = socket(AF_INET, SOCK_STREAM, 0))<0)
  19.                 printf("socket error");
  20.        
  21.         bzero(&servaddr, sizeof(servaddr));
  22.         servaddr.sin_family = AF_INET;
  23.         servaddr.sin_port = htons(13);
  24.         if (inet_pton(AF_INET, argv[1], &servaddr.sin_addr) <=0)
  25.                 printf("inet_pton error for %s", argv[1]);
  26.        
  27.         if (connect(sockfd, (struct sockaddr *) &servaddr, sizeof(servaddr))<0)
  28.                 printf("connect error\n");
  29.        
  30.         while ((n=read(sockfd, recvline, MAXLINE))>0)
  31.                 recvline[n] = 0;
  32.                 if (fputs(recvline,stdout) == EOF)
  33.                         printf("fputs error");
  34.        
  35.         if (n<0)
  36.                 printf("read error");
  37.         exit(0);
  38. }
复制代码

./daytimepc 127.0.0.1
怎么说连接不上啊?
我把我的地址改成127.0.0.1了,能ping通,但是怎么就是connect error呢?
还有,问个菜的问题,我的ip是dhcp是,127.0.0.1是否还可直接用???
发表于 2004-3-23 11:32:28 | 显示全部楼层
我知道了是unp第一章的daytime代码
请问你的daytime服务开着嘛。。。。
 楼主| 发表于 2004-3-23 12:27:55 | 显示全部楼层
开了啊,还有一个daytime-udp也开了,还是一样的错误啊!
发表于 2004-3-23 16:04:49 | 显示全部楼层
if (connect(sockfd, (struct sockaddr *) &servaddr, sizeof(servaddr))<0)
                printf("connect error\n");
这里的问题啊
这样你开个tcpdump看看有什么反映
 楼主| 发表于 2004-3-23 16:25:53 | 显示全部楼层
问题解决了,不是程序本身的问题,是os的问题,每次都要重新启动一下网络,我的eth0才有地址,郁闷!
再问一个,那个readline,我man后,它只有一个参数,但是steven给的有3个参数,还有,象bind啊,我man的时候,怎么出现的和man socket啊,出现不一样啊??
不是我所希望出现的
发表于 2004-3-23 16:30:43 | 显示全部楼层
这个问题问的好~~~
我就这个问题也研究了好久,你看看readline和writen的时候他怎么写的
这是他自己开发的函数。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
 楼主| 发表于 2004-3-24 15:49:55 | 显示全部楼层
呵呵,看了,不过如果要把老大自己写的函数加到我的系统里,编译的时候,系统自己就认识这个函数,同时也不要用到老大的头文件,
有没有办法啊?
发表于 2004-3-25 10:10:26 | 显示全部楼层
我不用unp.h的。。。
我系统不能处理,要修改里面的内容,麻烦。。。
发表于 2004-3-25 20:44:23 | 显示全部楼层
我原来在RH7.3下编译过unp.h,好像只要改两、三个地方就行了,不是很麻烦
发表于 2004-3-25 21:29:30 | 显示全部楼层
freebsd4.7下什么都不要改,晕倒
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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