首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

linux网络编程-客户端编译有关问题分析

2012-03-24 
linux网络编程--客户端编译问题分析我在编译客户端应用测试程序时出现了下面的问题,本人刚刚接触linux操作

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>

热点排行