netdev
[Top] [All Lists]

socket() returns "Invalid argument". Why? (UNPv1)

To: netdev@xxxxxxxxxxx
Subject: socket() returns "Invalid argument". Why? (UNPv1)
From: Fernando Gont <fernando@xxxxxxxxxxx>
Date: Wed, 09 Jan 2002 22:56:18 -0300
Sender: owner-netdev@xxxxxxxxxxx
Hi!

I compiled this simple TCP daytime client, expecting to get a
EPFNOSUPPORT error.


#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(9999, SOCK_STREAM, 0)) < 0){
                printf("errno: %d\n", errno);
                err_sys("socket error");
        }

        bzero(&servaddr, sizeof(servaddr));
        servaddr.sin_family = AF_INET;
        servaddr.sin_port   = htons(13);        /* daytime server */
        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;        /* null terminate */
                if (fputs(recvline, stdout) == EOF)
                        err_sys("fputs error");
        }
        if (n < 0)
                err_sys("read error");

        exit(0);
}


But after compiling and running this program, I see that errno gets the value 22, and having a look at the header files, I see:


#define EINVAL          22      /* Invalid argument */
#define EPFNOSUPPORT    96      /* Protocol family not supported */
#define EAFNOSUPPORT    97      /* Address family not supported by protocol */

My qustion is: if I don't get a EPFNOSUPPORT error for this example, when would I get it?

Greetings, Fernando (fernando@xxxxxxxxxxx)

"I believe it is a Human impossibility to obtain complete peace of mind
 in this dimension. There's too much suffering and pain -- particularly
 for children."  -Dolores O'Riordan



<Prev in Thread] Current Thread [Next in Thread>
  • socket() returns "Invalid argument". Why? (UNPv1), Fernando Gont <=