How can I read ICMP errors from "connected" UDP sockets?

  If the target machine discards the message because there is no process
  reading on the requested port number, it sends an ICMP message to your
  machine which will cause the next system call on the socket to return
  ECONNREFUSED.  Since delivery of ICMP messages is not guarenteed you
  may not recieve this notification on the first transaction.

  Remember that your socket must be "connected" in order to receive the
  ICMP errors.  I've been told, and Alan Cox has verified that Linux
  will return them on "unconnected" sockets.  This may cause porting
  problems if your application isn't ready for it, so Alan tells me
  they've added a SO_BSDCOMPAT flag which can be set for Linux kernels
  after 2.0.0.
Suggest a Site