in reply to problem with SOCKET

A few ideas: Did you check that the port being used by both programs is the same one after doing the getservbyport loop? (That just looks at the ones with names, and not the ones being used, so I'm not sure its useful anyway.)
Try leaving the client connected instead of closing after printing the line, and look at the contents of the command 'netstat -an' to see if its connected to the correct port/program ? (netstat -anp on linux, shows which programms are connected to which ports, or get 'Active Ports' from 32bit.bhs.com for Windows)

I'd advise you to use IO::Socket::INET and IO::Select if you can, programming sockets with those is a whole lot easier than the old c-style.
An example: Re: Daemons in Perl, and there are probably a lot more examples here somewhere.

C.