免费注册 查看新帖 |

Chinaunix

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

再次请教linux下C语言udp socket编程问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-07-27 17:04 |只看该作者 |倒序浏览
server_addr.sin_addr=*((struct in_addr *)(host->h_addr));
我看一个教程上明明是这样写的,可编译出现错误: dereferencing pointer to incomplete type
在一些论坛上也看到了一模一样的问题,可还是没有给出解决的办法,google上也搜索过,只能来这里请教各位了,我的host是这样定义的struct hostent *host;
  再次谢谢各位

论坛徽章:
0
2 [报告]
发表于 2010-07-27 17:10 |只看该作者
server_addr.sin_addr=*((struct in_addr *)(host->h_addr));
我看一个教程上明明是这样写的,可编译出现错 ...
killerezero 发表于 2010-07-27 17:04



    给你个例子
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <errno.h>
  4. #include <string.h>
  5. #include <netdb.h>
  6. #include <sys/types.h>
  7. #include <netinet/in.h>
  8. #include <sys/socket.h>
  9. #include <unistd.h>

  10. int main(int argc, char *argv[])
  11. {
  12.     int sockfd;
  13.     char buffer[1024];
  14.     struct sockaddr_in server_addr;
  15.     struct hostent *host;
  16.     int portnumber,nbytes;
  17.     if(argc!=3)
  18.     {
  19.         fprintf(stderr,"Usage:%s hostname portnumber\a\n",argv[0]);
  20.         exit(1);
  21.     }
  22.     if((host=gethostbyname(argv[1]))==NULL)
  23.     {
  24.         fprintf(stderr,"Gethostname error\n");
  25.         exit(1);
  26.     }
  27.     if((portnumber=atoi(argv[2]))<0)
  28.     {
  29.         fprintf(stderr,"Usage:%s hostname portnumber\a\n",argv[0]);
  30.         exit(1);
  31.     }
  32.     /* 客户程序开始建立 sockfd描述符 */
  33.     if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)
  34.     {
  35.         fprintf(stderr,"Socket Error:%s\a\n",strerror(errno));
  36.         exit(1);
  37.     }
  38.     /* 客户程序填充服务端的资料 */
  39.     bzero(&server_addr,sizeof(server_addr));
  40.     server_addr.sin_family=AF_INET;
  41.     server_addr.sin_port=htons(portnumber);
  42.     server_addr.sin_addr=*((struct in_addr *)host->h_addr);
  43.     /* 客户程序发起连接请求 */
  44.     if(connect(sockfd,(struct sockaddr *)(&server_addr),sizeof(struct sockaddr)
  45.               )==-1)
  46.     {
  47.         fprintf(stderr,"Connect Error:%s\a\n",strerror(errno));
  48.         exit(1);
  49.     }
  50.     /* 连接成功了 */
  51.     if((nbytes=read(sockfd,buffer,1024))==-1)
  52.     {
  53.         fprintf(stderr,"Read Error:%s\n",strerror(errno));
  54.         exit(1);
  55.     }
  56.     buffer[nbytes]='\0';
  57.     printf("I have received:%s\n",buffer);
  58.     /* 结束通讯 */
  59.     close(sockfd);
  60.     exit(0);
  61. }
复制代码

论坛徽章:
0
3 [报告]
发表于 2010-07-27 17:11 |只看该作者
我编译了,成功的。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP