Пример #1
0
void Acceptor::listen(std::string const& hostname, std::string const& port) {
  auto res = create_addr_info(hostname, port);
  ibv_qp_init_attr init_attr;
  memset(&init_attr, 0, sizeof(init_attr));
  init_attr.cap.max_send_wr = m_credits;
  init_attr.cap.max_recv_wr = m_credits;
  init_attr.cap.max_send_sge = 1;
  init_attr.cap.max_recv_sge = 1;
  init_attr.cap.max_inline_data = 0;
  init_attr.sq_sig_all = 1;
  init_attr.qp_type = IBV_QPT_RC;
  int ret = rdma_create_ep(&m_cm_id, res, NULL, &init_attr);
  destroy_addr_info(res);
  if (ret) {
    rdma_destroy_ep(m_cm_id);
    throw exception::acceptor::generic_error(
        "Error on rdma_create_ep: " + std::string(strerror(errno)));
  }

  if (rdma_listen(m_cm_id, 128)) {
    rdma_destroy_ep(m_cm_id);
    throw exception::acceptor::generic_error(
        "Error on rdma_listen: " + std::string(strerror(errno)));
  }
}
Пример #2
0
BOOL run_server_mode() {
	LPSTR instance_name = NULL;
	SOCKET local_socket = INVALID_SOCKET;
	SOCKADDR_BTH sock_addr_bth_local = { 0 };
	LPCSADDR_INFO addr_info = NULL;
	BOOL ret = FALSE;
	char end;

	local_socket = socket(AF_BTH, SOCK_STREAM, BTHPROTO_RFCOMM);
	if (local_socket == INVALID_SOCKET) {
		print_error("socket()", WSAGetLastError());
		return FALSE;
	}

	ret = bind_socket(local_socket, &sock_addr_bth_local);
	if (!ret) {
		return FALSE;
	}

	addr_info = create_addr_info(&sock_addr_bth_local);
	if (!addr_info) {
		return FALSE;
	}

	ret = advertise_service_accepted(addr_info, &instance_name);
	if (!ret) {
		free(addr_info);
		if (instance_name) {
			free(instance_name);
		}
		return FALSE;
	}

	if (listen(local_socket, 4) == SOCKET_ERROR) {
		print_error("listen()", WSAGetLastError());
		free(addr_info);
		free(instance_name);
		return FALSE;
	}

	while (1) {
		printf("Waiting for client connection...");
		SOCKET client_socket = accept(local_socket, NULL, NULL);
		if (client_socket == INVALID_SOCKET) {
			print_error("accept()", WSAGetLastError());
			return FALSE;
		}
		printf("Client connected !\n");

		char *buffer = NULL;

		while(1) {

			if(!readBuffer(buffer,client_socket)) {
				return FALSE;
			}

			if(!strcmp(buffer,"openNoGba")){			
				WinExec("E:\\NO$GBA.2.6a\\NO$GBA.exe",1);
				free(buffer);
			}

			else if(!strcmp(buffer,"openMyComp")) {
				openMyComputer();
				free(buffer);
			}

			else if(!strcmp(buffer,"joystick")) {
				free(buffer);
				printf("Start joystick mode\n");
				while(1) {
					if(!readBuffer(buffer,client_socket)) {
						return FALSE;
					}

					joystickCMP(buffer); 

					if(!strcmp(buffer,"endJoystick")){
						free(buffer);
						break;
					}


					free(buffer);
				}
				printf("End joystick mode\n");
				continue;
			}

			else if(!strcmp(buffer,"openPlayer")) {
				free(buffer);
				WinExec("C:\\Program Files (x86)\\AIMP3\\AIMP3.exe",1);
				printf("Start player mode\n");
				while(1) {
					if(!readBuffer(buffer,client_socket)) {
						return FALSE;
					}

					playerCMP(buffer); 

					if(!strcmp(buffer,"endPlayer")){
						free(buffer);
						break;
					}


					free(buffer);
				}
				printf("End player mode\n");
				continue;
			}

			else if(!strcmp(buffer,"end")) {
				free(buffer);
				break;
			}

			else
				mouseCMP(buffer);
		}

		printf("Communication over\n");
		closesocket(client_socket);

		printf("Continue?(press 'n' to exit)");
		if(end = getch() == 'n') {
			break;
		}
	}

	free(addr_info);
	free(instance_name);
	closesocket(local_socket);
	return TRUE;
}