Hi there! I'm newbie in sockets programming nd tried to understand how they registered in system. Tried example 3.3 from here
and found that at least under my system (kubuntu 12.10) program prints nothing. "List open files" doesn't print too. What changes since then?
And yeah, i've changed grep argument to righ one, namely a.out and even stop program under gdb onthat system call to find footprints of registered that way socket, but still nothing.
For your convience just duplicate code:
Code:
/* inetaddr.c:
*
* Example using inet_addr(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)
{
fprintf(stderr, "%s: %s\n", on_what, strerror(errno));
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);
adr_inet.sin_addr.s_addr =inet_addr("127.0.0.95");
if ( adr_inet.sin_addr.s_addr == INADDR_NONE )
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 a.out");
return 0;
}
Bookmarks