Пример #1
0
int main(int argc, char *argv[]) {
  int listenfd, connectfd;
  struct sockaddr_in host_addr, pin_addr;
  int pin_addr_size;
  pthread_t multiCS;
  ADDR_ARG *arg = NULL;

  createSocket(&listenfd, 0);
  initHostAddr(&host_addr, myport);

  printf(" init ipaddress: %s\n", inet_ntoa(host_addr.sin_addr));
  bindPort(&listenfd, &host_addr);
  listenPort(&listenfd);

  pin_addr_size = sizeof(pin_addr);
  while (1) {
    getAccept(&listenfd, &connectfd, &pin_addr, &pin_addr_size);

    arg = (ADDR_ARG *)malloc(sizeof(ADDR_ARG));
    arg->connectfd = connectfd;
    memcpy((void *)&arg->cli_addr, &pin_addr, sizeof(pin_addr));

    createPthread(&multiCS, start_talk, arg);
  }

  close(listenfd);
  return 0;
}
Пример #2
0
// one job message per time
// close on recv
static void *jobReceiver_func(void *args)
{
	DEBUG_PRINT("Job Receiver running\n");
	// listen
	int servfd = listenPort(RENDERING_UNIT_PORT);
	char msgBuf[128];

	while(gl_cfg.flag != STATUS_EXIT)
	{
		// wait for connection
		// TODO: blocking wait, seems rendering unit only receive one task message
		//       so we can just exit this thread after receive it
		int clientfd = accept(servfd, NULL, NULL);
		if(clientfd < 0)
		{
			// do nothing currently
			perror("Failed to accept connection");
			continue;
		}
		//////////////////////////////
		// send header message
		// TODO: don't check result
		//////////////////////////////
		sprintf(msgBuf, "%s%s", PRO_HEADER_MESSAGE, PRO_MESSAGE_TAIL);
		sendMessage(clientfd, msgBuf, strlen(msgBuf));

		// recv message
		char *jobMsg = recvMessageWithTail(clientfd, PRO_MESSAGE_TAIL);

		if(NULL != jobMsg)
		{
			printf("Recv Message : %s\n", jobMsg);
			// parse message
			parseJobMessage(jobMsg);

			// free message
			free(jobMsg);
		}
		//////////////////////////////
		// send tail message
		// TODO: don't check result
		//////////////////////////////
		sprintf(msgBuf, "%s%s", PRO_TAIL_MESSAGE, PRO_MESSAGE_TAIL);
		sendMessage(clientfd, msgBuf, strlen(msgBuf));

		close(clientfd);
	}
	// this line will never be executed
	close(servfd);
	
	DEBUG_PRINT("Job Receiver ended\n");
}
Пример #3
0
std::string RhrController::getConfigString() const {

    std::stringstream config;
    if (connectionMethod() == RhrController::Connect) {
        auto host = listenHost();
        unsigned short port = listenPort();
        config << "connect " << host << " " << port;
    } else if (connectionMethod() == RhrController::Listen) {
        auto host = connectHost();
        unsigned short port = connectPort();
        if (port > 0) {
            config << "listen " << host << " " << port;
        } else {
            int id = m_module->id();
            config << "listen " << "_" << " " << ":" << id;
        }
    }

    return config.str();
}
Пример #4
0
int main(int argc, char *argv[], char **envp)
{
    if(argc != 3)
    {
        printf("Not enough arguments.");
        return -1;
    }

    // create a folder for server contents 
    strcat(server_directory, argv[1]);
    strcat(server_directory, "/");
    if(!opendir(server_directory))
    {
        mkdir(server_directory, 0770);      
    }

    server_port = atoi(argv[2]);

    parse("server/dfs.conf"); //grab what we need for the server

    listenPort(server_port); //start up the server

    return 1;
}