示例#1
0
void ServerProcedures::update()
{
	if (network->acceptNewClient(client_id))
	{
		printf("client %d has been connected to the server\n", client_id);
		sendInitPacket();

		if (client_id % 2 == 1)
		{
			this->sendStartGamePackets();
		}

		//TODO: only to test here
		if (client_id == 0)
		{
			srand(time(NULL));
			this->bitmapId1 = (std::rand() % 7) + 112;
			this->bitmapId2 = (std::rand() % 7) + 112;
			this->bitmapId3 = (std::rand() % 7) + 112;
			this->bitmapId4 = (std::rand() % 7) + 112;
		}

		client_id++;
	}

	receiveFromClients();
}
示例#2
0
void Transmitter::prepare()
{
#ifdef REN_DEBUG
	qWarning("void Transmitter::prepare()");
#endif
	sendInitPacket();
	tx = true;
	// renyang - 開始讓Record開始執行
	emitSignal(SIGNAL_START);
}
示例#3
0
void Transmitter::prepare()
{
	switch(status)
	{
		case TRANSMITTER_STATUS_NORMAL:
			status = TRANSMITTER_STATUS_WAITING;
		default:
			sendInitPacket();
			changeStatus(status);
			break;
	}
	transmitting = true;
}
示例#4
0
void ServerProcedures::receiveFromClients()
{

	Packet packet;

	std::map<unsigned int, SOCKET>::iterator iter;

	for (iter = network->sessions.begin(); iter != network->sessions.end(); iter++)
	{
		int data_length = network->receiveData(iter->first, network_data);

		if (data_length <= 0)
		{
			//no data recieved
			continue;
		}

		int i = 0;
		while (i < (unsigned int)data_length)
		{
			packet.deserialize(&(network_data[i]));
			i += sizeof(Packet);

			switch (packet.packet_type) {

			case INIT_CONNECTION:
				sendInitPacket();
				break;

			case MESSAGE_EVENT:

				printf("server received message event packet from client: ");
				std::cout << packet.message;
				printf("\n");
				
				sendMessagePackets(packet.message,packet.client_id);
				break;

			case GAME_EVENT:
				DataProcessing(packet);
				break;

			default:
				printf("error in packet types\n");
				break;
			}
		}
	}
}