关于htons;

    技术2022-05-19  22

    #include"fun.h"

    int main(int argc,char **argv){ int sockfd,l; struct sockaddr_in servaddr; char buf[1024];  sockfd=socket(PF_INET,SOCK_STREAM,0);

     printf("socket ok/n");  bzero(&servaddr,sizeof(servaddr)); servaddr.sin_family=PF_INET; servaddr.sin_addr.s_addr=inet_addr("192.168.1.135"); servaddr.sin_port=htons(8882); if((connect(sockfd,(struct sockaddr *)&servaddr,sizeof(servaddr)))<0) {  perror("connect");  return -1; }  l=read(sockfd,buf,sizeof(buf));  buf[l]=0;  printf("%s/n",buf);    close(sockfd);}上面只是一个很简单的tcp的客户端的程序,但是因为我一开始没有写htons(将一个16位整数主机字节序转换成网络字节序),程序运行后一直显示connect: Connection refused,我看过书上说htons(INADDR_ANY)时,htons可有可无。我以为在这个地方也是可有可无,结果导致逻辑上的错误;细节决定成败,此话应谨记在心;


    最新回复(0)