LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Linux - General (https://www.linuxquestions.org/questions/linux-general-1/)
-   -   netstat doesn't show tcp sockets in Redhat 7.2 (https://www.linuxquestions.org/questions/linux-general-1/netstat-doesnt-show-tcp-sockets-in-redhat-7-2-a-34111/)

pfpalmer 10-29-2002 09:45 AM

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;
}

Mik 10-30-2002 10:31 AM

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);

pfpalmer 10-30-2002 11:44 AM

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

Mik 10-31-2002 03:04 AM

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.