QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 686|回复: 5

关于linux下的socket编程问题,请大虾赐教!

[复制链接]
发表于 2003-5-27 15:43:33 | 显示全部楼层 |阅读模式
我编译了一个下面这个服务端程序:
main()
{
  int sockfd,new_fd;
  struct sockaddr_in srv_addr;    /* my address information */
  struct sockaddr_in cli_addr; /* connector's address information */
  int nbytes;

  if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) == -1) {
     perror("socket");
     exit(1);
  }

  srv_addr.sin_family = AF_INET;         /* host byte order */
  srv_addr.sin_port = htons(MYPORT);     /* short, network byte order */
  srv_addr.sin_addr.s_addr =htonl(INADDR_ANY); /* auto-fill with my IP */
  bzero(&(srv_addr.sin_zero), ;        /* zero the rest of the struct */

  if (bind(sockfd, (struct sockaddr *)&srv_addr,
     sizeof(struct sockaddr)) == -1) {
     perror("bind error");
     exit(1);
  }

  if(listen(sockfd,BACKLOG)==-1){
    perror("listen error");
    exit(1);
  }

  for(;;){
  nbytes = sizeof(struct sockaddr_in);
  if ((new_fd=accept(sockfd,(struct sockaddr *)&cli_addr,
          &nbytes)) == -1) {
    perror("accept error");
    continue;
  }

  printf("server:got packet from %s\n",inet_ntoa(cli_addr.sin_addr));

  if(write(new_fd,"hello,network! \n",14)==-1)
    perror("write error");
    close(new_fd);
  }

  close(sockfd);
}
在linux 下运行后出现:listen error:program not supported
请问我这问题是出在哪儿??如果我要发送文件夹能用这个程序嘛??
小弟不才,请大虾赐教!!!!!
发表于 2003-5-27 18:05:24 | 显示全部楼层
还没有看代码 看了一下出错信息 你在用root用户么?
还有你的myport myip是如何传递的 是不是已经被占用了?
回复

使用道具 举报

 楼主| 发表于 2003-5-27 22:56:26 | 显示全部楼层
我用的myport是3490,myip是直接代入的!
回复

使用道具 举报

发表于 2003-5-28 09:11:08 | 显示全部楼层
you can test if the port is in using before start your program.
回复

使用道具 举报

发表于 2003-6-2 15:01:49 | 显示全部楼层
你创建的socket是一个sock_dgram类型的接口,这是udp一类的无连接协议用的,不支持listen方法,如果你要用listen,可以把socket的类型该为sock_stream。
回复

使用道具 举报

发表于 2003-6-27 14:44:54 | 显示全部楼层
bind(sockfd, (struct sockaddr *)&srv_addr,sizeof(struct sockaddr))

改为:
bind(sockfd, (struct sockaddr *)&srv_addr,sizeof(srv_addr))

试试看是否有改观?
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-11-15 13:28 , Processed in 0.058984 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

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