白天 TCP 客户端中的连接错误

Connect Error in Daytime TCP Client

我做错了什么,因为我无法获得白天的输出。代码对我来说很好。另外,为什么我们将 inet_pton 中的第三个参数指定为 &serverAddress.sin_addr 而不是 &serverAddress.sin_addr.s_addr ?

#include    <stdio.h>
#include    <stdlib.h>
#include    <string.h>
#include    <sys/socket.h>
#include    <sys/time.h>
#include    <sys/types.h>
#include    <netinet/in.h>
#include    <arpa/inet.h>
#include    <errno.h>
#include    <unistd.h>

#define MAXLINE 4096

int main(int argc, char **argv)
{
    int sockfd, n;
    char receiveLine[MAXLINE +1];
    struct sockaddr_in serverAddress;

    if(argc != 2)
    {
        printf("\nUsage: a.out <IPaddress>\n");                                  //First Argument is FileName, Second should be IP Address
        exit(0);
    }

    if( (sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
    {       
        printf("Socket error\n");
        exit(0);
    }

    bzero(&serverAddress, sizeof(serverAddress));
    serverAddress.sin_family = AF_INET;
    serverAddress.sin_port = htons(4455);

    if(inet_pton(AF_INET, argv[1], &serverAddress.sin_addr) <= 0)            //Presentation to Network.
    {   
        printf("inet_pton error for %s",argv[1]);
        exit(0);
    }

    if(connect(sockfd, (struct sockaddr*)&serverAddress, sizeof(serverAddress))<0)
    {
        printf("connect error");
        exit(0);
    }

    while( (n = read(sockfd, receiveLine, MAXLINE)) > 0)
    {
        receiveLine[n] = 0;
        if(fputs(receiveLine, stdout) == EOF)
        {       
            printf("fputs error");
            exit(0);
        }
    }

    if(n < 0)
    {   
        printf("read error");
        exit(0);
    }
    exit(0);    
}

(代表问题作者发布解决方案).

我傻到忘了监听端口。使用 "nc -l localhost 4455".