static void createsocket(const char *address, const char *port, struct portinfo *oldportinfo) { struct portinfo *p=malloc(sizeof(struct portinfo)); if (!p) { perror("CRIT: malloc"); return; } D(DEBUG_CONFIG) { fprintf(stderr, "DEBUG: Creating socket on %s, port %s\n", address ? address:"*", port); fflush(stderr); } if (mksocket(address, port, SOCK_STREAM, &p->fd1, &p->fd2, &search_old_sockets, oldportinfo)) { fprintf(stderr, "CRIT: Cannot create socket on %s, port %s: %s\n", address ? address:"*", port, strerror(errno)); fflush(stderr); return; } p->next=portlist; portlist=p; }
void main() { InitWinSock(); primarySock = mksocket(); sockaddr_in service; service.sin_family = AF_INET; service.sin_addr.s_addr = htonl(INADDR_ANY); service.sin_port = htons(SERVER_PORT); if (bind( primarySock, (SOCKADDR*) &service, sizeof(service)) == SOCKET_ERROR) { printf("bind() failed.\n"); closesocket(primarySock); return; } sockaddr_in sender; int senderlen = sizeof(sender); stMessage recvMessage; cout <<"recving..."<<endl; for(;;) { int iret = recvfrom(primarySock,(char*)&recvMessage,sizeof(stMessage),0,(SOCKADDR *)&sender,&senderlen); if(iret < 0) { cout << "recv data error!"<<endl; }else { int type = recvMessage.iMessageType; switch(type) { case LOGIN: clientLogin(&recvMessage,&sender); getUserList(sender); break; case LOGOUT: removeUser(recvMessage.message.loginoutMessage.stUserName); break; case GETUSERLIST: { stP2PMessage command; command.iMessageType = GETUSERLIST; sendto(primarySock,(const char *)&command,sizeof(stP2PMessage),0,(const SOCKADDR *)&sender,senderlen); getUserList(sender); break; } case P2PTRAN: P2PTran(recvMessage.message.translateMessage.stUserName,primarySock,sender); break; } } } getchar(); }
int main(int argc, char *argv[]) { int s; int on = 1; struct sigaction nuevaSenal; struct sigaction viejaSenal; sigset_t conjuntoSenales; if (argc != 2) { usage(argv[0], "namesocket"); } s = mksocket(argv[1]); if (s < 0) { fprintf(stderr, "No se pudo crear un socket %d %s\n", errno, strerror(errno)); exit(1); } listen(s, 5); if ((ns = accept(s, NULL, NULL)) < 0) { fprintf(stderr, "No se pudo aceptar una conexion %d %s\n", errno, strerror(errno)); exit(1); } sigemptyset(&conjuntoSenales); nuevaSenal.sa_handler = manejadorSenales; nuevaSenal.sa_mask = conjuntoSenales; nuevaSenal.sa_flags = 0; if (sigaction(SIGIO, &nuevaSenal, &viejaSenal) < 0) { fprintf(stderr, "Error manejo de senales %d %s\n", errno, strerror(errno)); exit(1); } if (fcntl(0, F_SETOWN, getpid()) < 0) { fprintf(stderr, "Error estableciendo la identificacion %d %s\n", errno, strerror(errno)); exit(1); } if (ioctl(0, FIOASYNC, &on) < 0) { fprintf(stderr, "Error estableciendo FIOASYNC %d %s\n", errno, strerror(errno)); exit(1); } if (noBloqueante(0) < 0) { fprintf(stderr, "Error estableciendo descriptor no bloqueante %d %s\n", errno, strerror(errno)); exit(1); } if (fcntl(ns, F_SETOWN, getpid()) < 0) { fprintf(stderr, "Error estableciendo la identificacion %d %s\n", errno, strerror(errno)); exit(1); } if (ioctl(ns, FIOASYNC, &on) < 0) { fprintf(stderr, "Error estableciendo FIOASYNC %d %s\n", errno, strerror(errno)); exit(1); } if (noBloqueante(ns) < 0) { fprintf(stderr, "Error estableciendo descriptor no bloqueante %d %s\n", errno, strerror(errno)); exit(1); } while (1) { veces++; } exit(0); return 0; }
int attach(char *path) { struct event evs[2]; struct termios cur_term; struct ae_msg am; /* If no file was given get any form the user */ if (path == NULL) { path = getdetached(); /* No detached process found */ if (path == NULL) { warnx("Nothing detached"); return 1; } } /* Get current terminal and save it in save_term */ tcgetattr(0, &cur_term); save_term = cur_term; atexit(restore); cur_term.c_iflag &= ~(IGNBRK|BRKINT|PARMRK|ISTRIP|INLCR|IGNCR| ICRNL); cur_term.c_iflag &= ~(IXON|IXOFF); cur_term.c_oflag &= ~(OPOST); cur_term.c_lflag &= ~(ECHO|ECHONL|ICANON|ISIG|IEXTEN); cur_term.c_cflag &= ~(CSIZE|PARENB); cur_term.c_cflag |= CS8; cur_term.c_cc[VLNEXT] = _POSIX_VDISABLE; cur_term.c_cc[VMIN] = 1; cur_term.c_cc[VTIME] = 0; tcsetattr(0, TCSADRAIN, &cur_term); signal(SIGPIPE, SIG_IGN); signal(SIGXFSZ, SIG_IGN); signal(SIGHUP, signal_handler); signal(SIGTERM, signal_handler); signal(SIGINT, signal_handler); signal(SIGQUIT, signal_handler); signal(SIGWINCH, signal_handler); event_init(); m_socket = mksocket(path); if (m_socket < 0) err(1, "mksocket: %s", path); event_set(&evs[0], 0, EV_READ|EV_PERSIST, std_in, &evs[0]); if (event_add(&evs[0], NULL) < 0) err(1, "event_add0"); event_set(&evs[1], m_socket, EV_READ|EV_PERSIST, master_in, &evs[1]); if (event_add(&evs[1], NULL) < 0) err(1, "event_add1"); /* Tell the master our win size */ ioctl(0, TIOCGWINSZ, &am.u.ws); write(m_socket, &am, sizeof(am)); event_dispatch(); return 0; }
int main(int argc, char *argv[]) { int s; fd_set readfds, execptfds; int nFds; int ns; if (argc != 2) { usage(argv[0], "namesocket"); } s = mksocket(argv[1]); if (s < 0) { fprintf(stderr, "No se pudo crear un socket %d %s\n", errno, strerror(errno)); exit(1); } listen(s, 5); if ((ns = accept(s, NULL, NULL)) < 0) { fprintf(stderr, "No se pudo aceptar una conexion %d %s\n", errno, strerror(errno)); exit(1); } while (1) { FD_ZERO(&readfds); FD_ZERO(&execptfds); FD_SET(0, &readfds); FD_SET(ns, &readfds); FD_SET(0, &execptfds); FD_SET(ns, &execptfds); nFds = select(ns + 1, &readfds, NULL, &execptfds, NULL); if (nFds > 0) { if (leerEscribir(&readfds, 0, ns) < 0) { fprintf(stderr, "Error en la lectura: %d %s\n", errno, strerror(errno)); exit(1); } if (leerEscribir(&readfds, ns, 1) < 0) { fprintf(stderr, "Error en la lectura: %d %s\n", errno, strerror(errno)); exit(1); } if (validarError(&execptfds, 0) < 0) { fprintf(stderr, "Error en la lectura: %d %s\n", errno, strerror(errno)); exit(1); } if (validarError(&execptfds, s) < 0) { fprintf(stderr, "Error en la lectura: %d %s\n", errno, strerror(errno)); exit(1); } } } exit(0); return 0; }