|
|
本人初学socket编程,在编写一个简单的从服务器读取当前时间的程序为何执行时报Connection refused 的错误
代码如下:
#include <stdio.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <netdb.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
#define HOSTNAMELEN 40
#define BUFLEN 1024
#define PORT 13
int main(int argc, char* argv[])
{
int rc;
int sockfd;
char buf[BUFLEN+1];
char* pc;
struct sockaddr_in sa;
struct hostent* hen;
if(argc<2){
fprintf(stderr,"Missing host name\n");
exit(1);
}
hen=gethostbyname(argv[1]);
if(!hen){
perror("couldnot resolve host name");
}
memset(&sa,0,sizeof(sa));
sa.sin_family=AF_INET;
sa.sin_port=htons(PORT);
memcpy(&sa.sin_addr.s_addr,hen->h_addr_list[0],hen->h_length);
sockfd=socket(AF_INET,SOCK_STREAM,0);
if(sockfd<0){
perror("socket() failed");
}
rc=connect(sockfd,(struct sockaddr*)&sa,sizeof(sa));
if(rc){
perror("connect() failed");
}
pc=buf;
while(rc=read(sockfd,pc,BUFLEN-(pc-buf))){
pc+=rc;
}
close(sockfd);
*pc='\0';
printf("time: %s ",buf);
return 0;
} |
|