Exemplo n.º 1
0
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;
}
Exemplo n.º 2
0
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;
}
Exemplo n.º 4
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;
}
Exemplo n.º 5
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;
}