#include <string.h>
#include <errno.h>
#include <netinet/in.h>
#include <sys/types.h>
#include <sys/socket.h>


int main()
{
  int iSockFd;
  int iSockOpts;
  unsigned long inaddr;
  struct sockaddr_in saSrc, saDst;
  socklen_t iSrcLen, iDstLen;

  saSrc.sin_family = AF_INET;
  saSrc.sin_port = 8888;
  inaddr = inet_addr("138.195.143.250");          /* Use eth1 to send packets */
  memcpy(&saSrc.sin_addr, &inaddr, sizeof(inaddr));
  iSrcLen = sizeof(saSrc);

  saDst.sin_family = AF_INET;
  saDst.sin_port = 9999;
  inaddr = inet_addr("239.0.0.1");           /* Dst = all machines on the LAN */
  memcpy(&saDst.sin_addr, &inaddr, sizeof(inaddr));
  iDstLen = sizeof(saDst);

  iSockFd = socket(AF_INET, SOCK_DGRAM, 0);
  if (iSockFd < 0)
    printf("Socket error: %s\n", strerror(errno));

  iSockOpts = 1;
  if (setsockopt(iSockFd, SOL_SOCKET, SO_BROADCAST, &iSockOpts,
      sizeof(iSockOpts)) < 0)
    printf("Setsockopt error: %s\n", strerror(errno));

  if (setsockopt(iSockFd, SOL_SOCKET, SO_DONTROUTE, &iSockOpts,
      sizeof(iSockOpts)) < 0)
    printf("Setsockopt error: %s\n", strerror(errno));

  if (bind(iSockFd, (struct sockaddr*)&saSrc, iSrcLen))
    printf("Bind error: %s\n", strerror(errno));

  if (connect(iSockFd, (struct sockaddr*)&saDst, iDstLen))
    printf("Connect error: %s\n", strerror(errno));

  if (send(iSockFd, "toto\n", 5, 0))
    printf("Send error: %s\n", strerror(errno));

  return 0;
}


syntax highlighted by Code2HTML, v. 0.9.1