#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);
}
参考[Linux/Unix C 编程] perror函数,strerror函数,errno
使用错误输出函数输出错误代码或信息,这样比自己只输出有错误更容易找到原因。
先把具体错误信息打印出来,这样你就知道API调用具体出错的上下文了,这样比较好分析问题。