在下面的函数出现了错误,编译的时候函数inet_pton函数出错,但是不知到原因,难道这个函数的用法错了吗
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<stdio.h>
#include<stdlib.h>
#include<strings.h>
void outputError(char *message)
{
fprintf(stdout, "error:%s\n",message);
exit(0);
}
int main(int argc, char *argv[])
{
int sockFd;
char receiveBuffer;
struct sockaddr_in server_addr;
int port=13;
if(argc!=2)
{
outputError("usage:getTime <IPaddress>");
}
if((sockFd=socket(AF_INET, SOCK_STREAM, 0))<0)
{
outputError("socket occured error!");
}
bzero(&server_addr, sizeof(server_addr));
server_addr.sin_family=AF_INET;
server_addr.sin_port=htonl(port);
if((inet_pton(AF_INET, argv[1], &server_addr.sin_addr))<=0);
{
outputError("inet_pton occured error!");
}
if(connect(sockFd, (struct sockaddr*)&server_addr, sizeof(server_addr)<0));
{
outputError("connect to server failied");
}
while((read(sockFd, receiveBuffer, 1))==1)
{
fprintf(stdout, "%c", receiveBuffer);
}
exit(0);
}
```
if((inet_pton(AF_INET, argv[1], &server_addr.sin_addr))<=0); 把最后那个 "; "去掉,之后connect的调用也有这个问题
server_addr.sin_port是unsigned short,改成server_addr.sin_port=htons(port);
http://blog.csdn.net/dddfly/article/details/3443189
先检查有没有不符合语法规范的地方,再说调用的问题!
是有几个语法错误,但是函数出错并不是这些原因,我把该了之后的code运行,还是一样的出错了,同样是inet_pton函数执行失败
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<stdio.h>
#include<stdlib.h>
#include<strings.h>
void outputError(char *message)
{
fprintf(stdout, "error:%s\n",message);
exit(0);
}
int main(int argc, char *argv[])
{
int sockFd;
char receiveBuffer;
struct sockaddr_in server_addr;
int port=13;
if(argc!=2)
{
outputError("usage:getTime <IPaddress>");
}
if((sockFd=socket(AF_INET, SOCK_STREAM, 0))<0)
{
outputError("socket occured error!");
}
bzero(&server_addr, sizeof(server_addr));
server_addr.sin_family=AF_INET;
server_addr.sin_port=htons(port);
if((inet_pton(AF_INET, argv[1], &server_addr.sin_addr))<=0)
{
outputError("inet_pton occured error!");
}
if(connect(sockFd, (struct sockaddr*)&server_addr, sizeof(server_addr)<0))
{
outputError("connect to server failied");
}
while((read(sockFd, receiveBuffer, 1))==1)
{
fprintf(stdout, "%c", receiveBuffer);
}
exit(0);
}