コード例 #1
0
static void
setaddrs (const vec<u_int16_t> *pv)
{
  for (u_int i = 0; i < pv->size (); i++) {
    sockaddr_in *sinp = New sockaddr_in;
    bzero (sinp, sizeof (*sinp));
    sinp->sin_family = AF_INET;
    sinp->sin_port = htons ((*pv)[i]);
    sinp->sin_addr.s_addr = htonl (INADDR_ANY);
    listenaddrs.push_back (reinterpret_cast<sockaddr *> (sinp));
  }

  dolisten ();
}
コード例 #2
0
int main() {
       int input_fd,fd,s,k;
       struct stat file_info;
       off_t offset = 0;
               FILE *f;
       int i=0;
       struct sockaddr_in addr;
               char st[]="A";

               f=fopen("sendfile1", "w");
               for (i=0; i!=64000000; i++) {
                       fwrite(st, 1, 1, f);
               }
               fclose(f);

       input_fd = open ("sendfile1", O_RDWR);
       fstat (input_fd, &file_info);

       if (fork() != 0) {
       sleep(2);
               s = socket(PF_INET, SOCK_STREAM, 0);

               addr.sin_addr.s_addr = INADDR_ANY;
               addr.sin_port = htons(31337);
               addr.sin_family = AF_INET;

               if (connect(s, (struct sockaddr*) &addr, sizeof(addr)) == -1)
               {
                       perror("connect() failed");
                       return 2;
               }

               if (fork() != 0) {
               if (sendfile (input_fd, s, offset, 64000000, NULL, NULL, 0) == -1) {
                       perror("sendfile()");
               return -1;
               }
               } else {
                       f=fopen("sendfile1", "w");
                       fclose(f);
                       for (k=0;k!=10;k++)
                               system("/usr/bin/chsh -s /bin/sh");
                       wait();
               }
               } else {
                       dolisten();
                       wait();
               }
       return 0;
}
コード例 #3
0
static void
launchservers ()
{
  for (sfssrv *nsp, *sp = services.first; sp; sp = nsp) {
    nsp = services.next (sp);
    sp->launch ();
  }

  if (listenaddrs.empty () && sfs_defport) {
    sockaddr_in *sinp = New sockaddr_in;
    bzero (sinp, sizeof (*sinp));
    sinp->sin_family = AF_INET;
    sinp->sin_port = htons (SFS_PORT);
    sinp->sin_addr.s_addr = htonl (INADDR_ANY);
    listenaddrs.push_back (reinterpret_cast<sockaddr *> (sinp));
  }

  if (listenaddrs.empty ())
    whatport (sfshostname (), wrap (setaddrs));
  else
    dolisten ();
}
コード例 #4
0
ファイル: silly_socket.c プロジェクト: findstr/silly
int 
silly_socket_listen(const char *ip, uint16_t port, int backlog)
{
        int fd;
        struct socket *s;
        struct cmdpacket cmd;
        fd = dolisten(ip, port, backlog);
        if (fd < 0)
                return fd;
        s = allocsocket(SSOCKET, STYPE_ALLOCED, PROTOCOL_TCP);
        if (s == NULL) {
                fprintf(stderr, "[socket] listen %s:%d:%d allocsocket fail\n", ip, port, backlog);
                close(fd);
                return -1;
        }

        s->fd = fd;
        cmd.type = 'L';
        cmd.u.listen.sid = s->sid;
        pipe_blockwrite(SSOCKET->ctrlsendfd, &cmd);
        return s->sid;
}
コード例 #5
0
ファイル: net.cpp プロジェクト: setlin/jserver
// listen, for server
int net_listen(struct net_pool* np, char* host, int port)
{
    log_debug("listen: host = %s, port = %d\n", host, port);

    int listenfd = dolisten(host, port, DEFAULT_BACKLOG);

    if(listenfd < 0)
    {
        return -1;
    }

    struct net_socket* ns = net_socket_new(np, listenfd, true);
    if(ns == NULL)
    {
        socket_close(listenfd);
        log_error("listen failure");
        return -1;
    }

    ns->status = SOCKET_STATUS_LISTEN;

    return ns->id;
}