c - Recovering IP/Port from Socket Descriptor -


i'm writing a clone of inetd in must run server prints ip , port of client connecting it.

as overwrite stdin , stdout socket descriptor, my initial solution recover sockaddr_in structure, contains needed information. doing getsockname(), however, returning empty structure, bits set 0.

any idea of wrong approach? there other approaches can use recover ip/port?

thanks

as r.. pointed out, should use getpeername. both function , getsockname take file descriptor first argument, not stream pointer (file *). use fileno(stdin) file descriptor standard input (or hard-code stdin_fileno, it's constant).

also, last argument getsockname , getpeername should pointer socklen_t, not constant, , should use sockaddr_in tcp/ip:

struct sockaddr_in peeraddr; socklen_t peeraddrlen = sizeof(peeraddr); getpeername(stdin_fileno, &peeraddr, &peeraddrlen); 

see complete example here.


Comments

Popular posts from this blog

android - Spacing between the stars of a rating bar? -

html - Instapaper-like algorithm -

c# - How to execute a particular part of code asynchronously in a class -