linux网络编程--客户端编译问题分析
我在编译客户端应用测试程序时出现了下面的问题,本人刚刚接触linux操作系统,还望各位前辈多多指导!谢谢各位了!
一下是源程序:
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <sys/stat.h>
#include <arpa/inet.h>
#include <errno.h>
#include <string.h>
#include <netinet/in.h>
#define  PORT       1234
#define  BUF_SIZE   1024
int main(int argc,char **argv[])
{
     int sockfd,sendbytes;
     char buf[BUF_SIZE];
     struct hostent *host;   
     struct sockaddr_in serv_addr;      
     if(argc<3)
    {
        fprintf(stderr,"./client hostname text\n");
        exit(1);
     }      
    if((host = gethostbyname(argv[1])) == NULL)
    {
        perror("gethostbyname error");
        exit(1);    
     }      
     memset(buf,0,sizeof(buf));
     sprintf(buf,"%s",argv[2]);     
     if((sockfd = socket(AF_INET,SOCK_SIREAM,0)) == -1)
     {
        perror("socket error");
        exit(1);
      }
      serv_addr.sin_family = AF_INET;
      serv_addr.sin_addr = *((struct in_addr*)(host->h_addr));//50行
      serv_addr.sin_port = htons(PORT);       
      memset(serv_addr.sin_zero,0,8);
      if(connect(sockfd,(struct sockaddr*)&serv_addr, sizeof(struct sockaddr)) == -1)
      {
          perror("connect error");
          exit(1);
      }       
      if((sendbytes = send(sockfd,buf,strlen(buf),0)) == -1)
      {
          perror("send error");
          exit(1);
       }
       printf("send success!\n");
       close(sockfd);        
       exit(0);
}
下是编译出现的问题:
$ gcc -o client client.c
client.c 50:dereferencing pointer to incomplete type
麻烦请问出现问题的原因是什么,能否详细点,我是初学者对此知之甚少,先谢谢各位了。
------解决方案--------------------头文件没有包含全,可能需要 #include <netdb.h>
------解决方案--------------------
支持楼上
另外,还有两个问题
1、int main(int argc,char **argv[])  ==>  int main(int argc,char **argv)
2、SOCK_SIREAM  ==>  SOCK_STREAM
------解决方案--------------------LS已经说过了,再补充个
LZ调用send函数,该函数需要的头文件
#include <sys/types.h>
#include <socket.h>