in reply to IO::Socket Listen

I'm a bit surprised that you've set up two separate sockets for sending and receiving.  Is the device actually supposed to initiate a backwards connection to your machine for its reply, instead of simply replying via the socket you've already established when connecting to the device?