示例#1
0
/* Create a new NIO UDP */
nio_t *create_nio_udp(int local_port, char *remote_host, int remote_port)
{
   nio_udp_t *nio_udp;
   nio_t *nio;

   if (!(nio = create_nio()))
      return NULL;

   nio_udp = &nio->u.nio_udp;
   nio_udp->local_port  = local_port;
   nio_udp->remote_port = remote_port;

   if (!(nio_udp->remote_host = strdup(remote_host))) {
     fprintf(stderr, "create_nio_udp: insufficient memory\n");
     free_nio(nio);
     return NULL;
   }

   if ((nio_udp->fd = udp_connect(local_port, remote_host, remote_port)) < 0) {
     fprintf(stderr, "create_nio_udp: unable to connect to %s:%d\n", remote_host, remote_port);
     free_nio(nio);
     return NULL;
   }

   nio->type = NIO_TYPE_UDP;
   nio->send = (void *)nio_udp_send;
   nio->recv = (void *)nio_udp_recv;
   nio->free = (void *)nio_udp_free;
   nio->dptr = &nio->u.nio_udp;
   return nio;
}
示例#2
0
/* Create a new NIO Ethernet (using PCAP) */
nio_t *create_nio_ethernet(char *dev_name)
{
   nio_ethernet_t *nio_ethernet;
   nio_t *nio;

   if (!(nio = create_nio()))
      return NULL;

   nio_ethernet = &nio->u.nio_ethernet;

   if (!(nio_ethernet->pcap_dev = nio_ethernet_open(dev_name))) {
      free_nio(nio);
      return NULL;
   }

   nio->type = NIO_TYPE_ETHERNET;
   nio->send = (void *)nio_ethernet_send;
   nio->recv = (void *)nio_ethernet_recv;
   nio->free = (void *)nio_ethernet_free;
   nio->dptr = &nio->u.nio_ethernet;
   return nio;
}