为什么会提示Connection refused啊?
刚刚开始看《UNIX网络编程》,就尝试了一下第一章的获取时间的程序,使用环回地址运行或者查看ifconfig里面的IPv4地址都得到的结果是connect error: Connection refused,请问是什么原因?
如果尝试ping 127.0.0.1的话则没有任何问题。
代码如下;
服务器端
#include "unp.h"#include <time.h>int main(int argc , char ** argv){ int listenfd , connfd; struct sockaddr_in servaddr; char buff[MAXLINE]; time_t ticks; listenfd = socket(AF_INET , SOCK_STREAM , 0); bzero(&servaddr,sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = htonl(INADDR_ANY); servaddr.sin_port = htons(13); bind(listenfd , (SA *)&servaddr , sizeof(servaddr)); listen(listenfd , LISTENQ); while(1) { connfd = accept(listenfd , (SA *)NULL , NULL); ticks = time(NULL); snprintf(buff , sizeof(buff) , "%.24s\r\n",ctime(&ticks)); write(connfd , buff , strlen(buff)); close(connfd); } return 0;}#include "unp.h"int main(int argc , char ** argv){ int sockfd , n; char recvline[MAXLINE + 1]; struct sockaddr_in servaddr; if(argc != 2) { err_quit("usage: a.out <IPaddress>"); } if( (sockfd = socket(AF_INET , SOCK_STREAM , 0) ) < 0) { err_sys("socket error"); } bzero(&servaddr , sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_port = htons(13); if(inet_pton(AF_INET , argv[1] , &servaddr.sin_addr) <= 0) { err_quit("inet_pton error for %s",argv[1]); } if(connect(sockfd , (SA*)&servaddr , sizeof(servaddr)) < 0) { err_sys("connect error"); } while( ( n = read(sockfd , recvline , MAXLINE)) > 0) { recvline[n] = 0; if(fputs(recvline , stdout) == EOF) { err_sys("fputs error"); } } if(n < 0) { err_sys("fputs error"); } return 0;}