netstat doesn't show tcp sockets in Redhat 7.2
The following program, taken straight out of a
book does not provide the expected result which is to display the created socket. The program works fine in Redhat 6.1. Has anyone else seen this problem and does anyone know if this works in Redhat 8.0. If RH 8.0 works I will just upgrade. If someone can point me to howto concerning the correct method to FTPing the ISO files that would be a big help. I have successfully downloaded the files and burned the CDs but when I try to boot it doesn't seem to work. I'm not sure if the problem is with the download method or the boot procedure. Any and all comments welcome. /* inetaton.c: * * Example using inet_aton(3) : */ #include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <errno.h> #include <string.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> /* * This function reports the error and * exits back to the shell : */ static void bail(const char *on_what) { fputs(on_what,stderr); fputc('\n',stderr); exit(1); } int main(int argc,char **argv) { int z; struct sockaddr_in adr_inet;/* AF_INET */ int len_inet; /* length */ int sck_inet; /* Socket */ /* Create a Socket */ sck_inet = socket(AF_INET,SOCK_STREAM,0); if ( sck_inet == -1 ) bail("socket()"); /* Establish address */ memset(&adr_inet,0,sizeof adr_inet); adr_inet.sin_family = AF_INET; adr_inet.sin_port = htons(9000); if ( !inet_aton("127.0.0.23", &adr_inet.sin_addr) ) bail("bad address."); len_inet = sizeof adr_inet; /* Bind it to the socket */ z = bind(sck_inet, (struct sockaddr *)&adr_inet, len_inet); if ( z == -1 ) bail("bind()"); /* Display our socket address */ system("netstat -pa --tcp 2>/dev/null" "| grep inetaton"); return 0; } |
That's because you haven't fully put the socket in the listening state yet. Add the following line after the bind:
listen(sck_inet, 5); |
I added "listen(sck_inet,5)" to the program but it seems to have no effect.
If I modify the netstat parms I can see the other sockets. I have Redhat 6.1 on my other PC and the identical prgram works as expected. At the moment I am downloading Redhat 8.0 and hope that when I upgrade this problem will go away. I am working through some socket programming tutorials and so this problem is holding me back. Thankyou for taking the time to respond. Paul |
Well I don't actually have any Redhat machines here to test it on. I tested it on Suse. But what kind of line is displayed when you run it in Redhat 6.2? Particularly what state it's in. It shouldn't be in the listen state yet. Is the executable named inetaton otherwise the grep part wouldn't really work.
|
All times are GMT -5. The time now is 11:29 AM. |