Get process that bind a port

Ezra Nugroho enugroho at spikesource.com
Thu Dec 1 01:36:06 UTC 2005


<snip>

> > Is this an RPC client-server program?
> > If it is, it's done intentionally so that any messages that may still
> > float around have a destination to rest in peace.
> 
> No RPC (if I understand what that means correctly), just 'regular' socket 
> programming.
> 
> > Use "select()" socket utility.
> > It may mean a little extra programming, but it is really rewarding.
> 
> Not sure how select() would help here. In this case the "server" side just do 
> really simple stuff, basically read and write to socket descriptor. It could 
> be that when server is interupted, there is still I/O that makes it not 
> immediately release the port. Are you saying using select() to clean up ?


You are right, you don't need select() if you just want to clean up. You
might want to consider it since it gracefully manages resources when
there is some network error/interrupt. Look at the chat server example: 
http://beej.us/guide/bgnet/output/html/advanced.html#select


This is how you clean up the socket.

// lose the pesky "address already in use" error message
if (setsockopt(listener, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(int)) ==
-1) 
{
        perror("setsockopt");
        exit(1);
}






More information about the fedora-list mailing list