Ubuntu — как запустить c ++ proram с помощью int main (int argc, char * argv [])

файл readme.txt:

Чтобы использовать программу, вы должны скомпилировать файл «main.cpp» и затем запустить исполняемый файл, передав в качестве первого аргумента номер порта
который приложение будет прослушивать для входящих точек данных (неполный набор данных, который используется для аппроксимации исходного сигнала), (argv [1] = номер порта).

Входящие пакеты должны соответствовать следующему формату:

0|numSensors(int32_t)|numMeasures(int32_t)|ToM(int32_t)|
3|sensorId(int16_t)|value(float)|timestamp(int64_t)|
3|sensorId(int16_t)|value(float)|timestamp(int64_t)|
3|sensorId(int16_t)|value(float)|timestamp(int64_t)|
3|sensorId(int16_t)|value(float)|timestamp(int64_t)|
....
2|

«numMeasures» — количество мер, предпринимаемых для каждого датчика (необходимо указать не менее 3 мер на
датчик, иначе вы не сможете собрать тренировочный набор).

«ToM» указывает тип измерения, а именно:

0 for TEMPERATURE
1 for HUMIDITY
2 for LUMINOSITY1

«SensorID»: это уникальный идентификатор для датчика, который отправляет данные

«значение»: показание датчика

«отметка времени»: вы догадываетесь …

Это формат пакетов, возвращаемых алгоритмом восстановления сигнала:

4|next_p_tx(float)|
3|sensorId(int16_t)|value(float)|timestamp(int64_t)|
3|sensorId(int16_t)|value(float)|timestamp(int64_t)|
3|sensorId(int16_t)|value(float)|timestamp(int64_t)|
3|sensorId(int16_t)|value(float)|timestamp(int64_t)|
....
2|

«next_p_tx»: вероятность передачи для датчиков, для следующего раунда сбора данных, смотрите наши публикации для получения дополнительной информации о подходе.

мой вопрос:
как запустить эту программу на Ubuntu? (через командную строку или любую IDE)

int main(int argc, char *argv[]) {
initMeasures = (sensorMeasures*) malloc(sizeof(sensorMeasures));
fprintf(stdout, "Starting...\n");

int serversock, clientsock;
struct sockaddr_in server, client;

if (argc != 2) {
fprintf(stderr, "USAGE: echoserver <port>\n");
exit(1);
}

/* Create the TCP socket */
if ((serversock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0) {
Die("Failed to create socket");
}

/* Construct the server sockaddr_in structure */
memset(&server, 0, sizeof(server)); /* Clear struct */
server.sin_family = AF_INET; /* Internet/IP */
server.sin_addr.s_addr = htonl(INADDR_ANY); /* Incoming addr */
server.sin_port = htons(atoi(argv[1])); /* server port */
/* Bind the server socket */
if (bind(serversock, (struct sockaddr *) &server, sizeof(server)) < 0) {
Die("Failed to bind the server socket");
} else {
fprintf(stdout, "Bind successful...\n");
}
/* Listen on the server socket */
if (listen(serversock, MAXPENDING) < 0) {
Die("Failed to listen on server socket");
} else {
fprintf(stdout, "Listen successful...\n");
}
/*
* Initialization of  "last"*/
for (int i = 0; i < 5; i++) {
last[i].Phi_prec = new Matrix(1, 1);
(*last[i].Phi_prec)(1, 1) = 0;
last[i].x_prec = new ColumnVector(1);
(*last[i].x_prec)(1) = 0;
last[i].y_prec = new ColumnVector(1);
(*last[i].y_prec)(1) = 0;
last[i].p_tx = 1.0;
last[i].depth = 0;
}
/* Run until cancelled */
while (1) {
unsigned int clientlen = sizeof(client);
printf("Wait for client connection...\n");
if ((clientsock = accept(serversock, (struct sockaddr *) &client,
&clientlen)) < 0) {
Die("Failed to accept client connection");
}
fprintf(stdout, "Client connected: %s:%d\n",
inet_ntoa(client.sin_addr), ntohs(client.sin_port));

now = time(NULL);
receiveData(clientsock); // receive socket data
reconstruct(); // reconstruct received data
sendResults(clientsock); // return reconstructed data to web application
printf("All operations successfully completed...\n");
}
free(initMeasures);
exit(EXIT_SUCCESS);
}

-4

Решение

Для использования программы вам необходимо скомпилировать файл «main.cpp»

Это g++ -Wall -Wextra -o echoserver main.cpp

и затем запустить исполняемый файл, передав в качестве первого аргумента номер порта

Это ./echoserver 12345 заменив номер тем портом, который вы хотите прослушать.

2

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector