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>