示例#1
0
/**
 * @brief Connects the client to the server.
 * @param QString host - the host name
 * @param int port - the port used by the server
 * @param QString pseudo - the client's name
 */
void MainWindow::serverConnection(QString host, int port, QString pseudo)
{
    strcpy(_player.name, pseudo.toStdString().c_str());
    init_host(_ptr_host, (char*)host.toStdString().c_str(), &_local_addr);
    assign_port(&_local_addr, port);

    _player.socket = create_socket();

    // Have to test if the client can be connect to the server
    if(server_connection(_player.socket, _local_addr) >= 0) {

        qDebug() << "[Server_connection] : Client is connected";

        startListeners(); // Have to start listeners threads

        // Ask to the server to add the new client into its array of players
        qDebug() << "[Server_connection] : Sending information to the server" << _player.name;
        frame f = make_frame(_local_addr.sin_addr, _local_addr.sin_addr, CONNECT, _player.name);
        write_to_server(_player.socket, &f);

        // When the client is connected, display the mainPage of the application
        ui->stackedWidget->slideInIdx(1, SlidingStackedWidget::BOTTOM2TOP);
    }
    else {
        //Connection is impossible
        QMessageBox errorBox(QMessageBox::Question,tr("error"),tr("Can't establish the connection with the server."),QMessageBox::Cancel);
        errorBox.exec();
    }

}
示例#2
0
文件: smi.c 项目: Scorpio92/mediatek
static int get_port(const char *arg, int master, unsigned int *port)
{
	int ret;

	ret = get_num(arg, port);
	// get port
	if (ret == 0) {
		snprintf(err_msg,
			MET_SMI_BUF_SIZE,
			"Normal: can't get number [%s]\n",
			arg);
		return MET_SMI_FAIL;
	}
	// check port
	if (check_port_vaild(master, *port) != MET_SMI_SUCCESS) {
		snprintf(err_msg,
			MET_SMI_BUF_SIZE,
			"Normal: check port failed [%s]\n",
			arg);
		return MET_SMI_FAIL;
	}
	// assign port
	if (assign_port(master, *port) != MET_SMI_SUCCESS) {
		snprintf(err_msg,
			MET_SMI_BUF_SIZE,
			"Normal: assign port failed [%s]\n",
			arg);
		return MET_SMI_FAIL;
	}

	return ret;
}
/*
 * There are serveal cases as follows:
 *
 * 1. "met-cmd --start --smi=toggle"
 *
 * 2. "met-cmd --start --smi=toggle:master"
 *
 * 3. "met-cmd --start --smi=master:port:rwtype:desttype:bustype"
 *
 * 4. "met-cmd --start --smi=dump"
 *
 */
static int smi_process_argument(const char *arg, int len)
{
	int master, port;
	int rwtype, desttype, bustype;
	int ret;
	int idx;

	if (len < 6)
		return -1;

	memset(err_msg, 0, MET_SMI_BUF_SIZE);

	/* --smi=toggle */
	if ((strncmp(arg, "toggle", 6) == 0) && (len == 6)) {
		if (met_smi.mode != 0)
			return -1;
		/* Set mode */
		met_smi.mode = 2;
	/* --smi=toggle:master */
	} else if ((strncmp(arg, "toggle", 6) == 0) &&
		arg[6] == ':' &&
		len > 7) {
		if (met_smi.mode != 0)
			return -1;
		ret = get_num(&(arg[7]), &toggle_master);
		if (ret == 0) {
			snprintf(err_msg,
				MET_SMI_BUF_SIZE,
				"Toggle master: can't get number [%s]\n",
				arg);
			return -1;
		}
		if (check_master_vaild(toggle_master) != MET_SMI_SUCCESS) {
			snprintf(err_msg,
				MET_SMI_BUF_SIZE,
				"Toggle master: check master failed [%s]\n",
				arg);
			return -1;
		}
		/* Set mode */
		met_smi.mode = 3;
	/* --smi=master:port:rwtype:desttype:bustype */
	} else if (len >= 9) {
		if ((met_smi.mode != 0) &&
			(met_smi.mode != 1))
			return -1;
		/* Initial variables */
		master = 0;
		port = 0;
		rwtype = 0;
		desttype = 0;
		bustype = 0;
		/* Get master */
		idx = 0;
		ret = get_num(&(arg[idx]), &master);
		if (ret == 0) {
			snprintf(err_msg,
				MET_SMI_BUF_SIZE,
				"Normal: can't get number [%s]\n",
				arg);
			return -1;
		}
		// Check master
		if (check_master_vaild(master) != MET_SMI_SUCCESS) {
			snprintf(err_msg,
				MET_SMI_BUF_SIZE,
				"Normal: check master failed [%s]\n",
				arg);
			return -1;
		}
		/* Get port */
		idx += ret + 1;
		ret = get_num(&(arg[idx]), &port);
		if (ret == 0) {
			snprintf(err_msg,
				MET_SMI_BUF_SIZE,
				"Normal: can't get number [%s]\n",
				arg);
			return -1;
		}
		// check port
		if (check_port_vaild(master, port) != MET_SMI_SUCCESS) {
			snprintf(err_msg,
				MET_SMI_BUF_SIZE,
				"Normal: check port failed [%s]\n",
				arg);
			return -1;
		}
		// assign port
		if (assign_port(master, port) != MET_SMI_SUCCESS) {
			snprintf(err_msg,
				MET_SMI_BUF_SIZE,
				"Normal: assign port failed [%s]\n",
				arg);
			return -1;
		}
		/* Get rwtype */
		idx += ret + 1;
		ret = get_num(&(arg[idx]), &rwtype);
		if (ret == 0) {
			snprintf(err_msg,
				MET_SMI_BUF_SIZE,
				"Normal: can't get number [%s]\n",
				arg);
			return -1;
		}
		// check rwtype
		if (check_rwtype_vaild(master, port, rwtype) !=
					MET_SMI_SUCCESS) {
			snprintf(err_msg,
				MET_SMI_BUF_SIZE,
				"Normal: check rwtype failed [%s]\n",
				arg);
			return -1;
		}
		// assign rwtype
		if (assign_rwtype(master, rwtype) != MET_SMI_SUCCESS) {
			snprintf(err_msg,
				MET_SMI_BUF_SIZE,
				"Normal: assign rwtype failed [%s]\n",
				arg);
			return -1;
		}
		/* Get desttype */
		idx += ret + 1;
		ret = get_num(&(arg[idx]), &desttype);
		if (ret == 0) {
			snprintf(err_msg,
				MET_SMI_BUF_SIZE,
				"Normal: can't get number [%s]\n",
				arg);
			return -1;
		}
		// check desttype
		if (check_desttype_valid(master, port, desttype) !=
					MET_SMI_SUCCESS) {
			snprintf(err_msg,
				MET_SMI_BUF_SIZE,
				"Normal: check desttype failed [%s]\n",
				arg);
			return -1;
		}
		// assign desttype
		if (assign_desttype(master, desttype) != MET_SMI_SUCCESS) {
			snprintf(err_msg,
				MET_SMI_BUF_SIZE,
				"Normal: assign desttype failed [%s]\n",
				arg);
			return -1;
		}
		/* Get bustype */
		idx += ret + 1;
		ret = get_num(&(arg[idx]), &bustype);
		if (ret == 0) {
			snprintf(err_msg,
				MET_SMI_BUF_SIZE,
				"Normal: can't get number [%s]\n",
				arg);
			return -1;
		}
		// check bustype
		if (check_bustype_valid(master, port, bustype) !=
					MET_SMI_SUCCESS) {
			snprintf(err_msg,
				MET_SMI_BUF_SIZE,
				"Normal: check bustype failed [%s]\n",
				arg);
			return -1;
		}
		// assign bustype
		if (assign_bustype(master, bustype) != MET_SMI_SUCCESS) {
			snprintf(err_msg,
				MET_SMI_BUF_SIZE,
				"Normal: assign bustype failed [%s]\n",
				arg);
			return -1;
		}
		// assign mode for each master TODO: need to re-check
		if (assign_mode(master, 1) != MET_SMI_SUCCESS) {
			snprintf(err_msg,
				MET_SMI_BUF_SIZE,
				"Normal: assign mode failed [%s]\n",
				arg);
			return -1;
		}
		/* Set mode */
		met_smi.mode = 1;
	/* --smi=dump */
	} else if (strncmp(arg, "dump", 4) == 0) {
		if (met_smi.mode != 0)
			return -1;
		/* Set mode */
		met_smi.mode = 4;
	} else {
		return -1;
	}

	return 0;
}