コード例 #1
0
ファイル: net_apis_RTOS.c プロジェクト: ntonjeta/Nodo-Sensore
void receive_task(void* pvParameters)
{
	struct NLS_HandleTypedef* hNLS = (struct NLS_HandleTypedef*)pvParameters;
	datagram_info* d_info;
	for( ; ; )
	{
		xQueueReceive(hNLS->event_queue, &d_info, portMAX_DELAY);
		#ifndef ROOT

		if (d_info->retry != 0)
		{
			UTSwapMainLink(hNLS->uTable);

			if(UTGetMainLink(hNLS->uTable) == UPSTREAM_TABLE_IS_EMPTY)
			{
				free_datagram_info(d_info);
			}
			else
			{
				receive_datagram(hNLS, d_info->source_if, d_info->packet, d_info->packet_length);

			}

		}
		else
		{
			receive_datagram(hNLS, d_info->source_if, d_info->packet, d_info->packet_length);
		}
		#else

		if (d_info->retry != 0)
		{
			downStreamTablePenaliziesBestPath(hNLS->dTable , d_info->address);
		}
		receive_datagram(hNLS,d_info->source_if,d_info->packet,d_info->packet_length);

		#endif
	}

}
コード例 #2
0
ファイル: server.c プロジェクト: JeffreyLimbacher/HW3
int main(int argc, char *argv[]) {
	if (argc < 2) {
		fprintf(stderr, "usage: ./server port\n");
		exit(0);
	}
	port = atoi(argv[1]);

	// receive_num_packets(argv);
	// receive_datagram(argv);
	
	return receive_num_packets(argv) + receive_datagram(argv);

	return 0;
}
コード例 #3
0
ファイル: server.c プロジェクト: 1234varun/reliableUDP
/**@brief Keeps receiving datagrams and prints them
 */
void run()
{
    int retval;
    char buf[DATAGRAM_DATA_SIZE];
    datagram_t datagram;

    while (1) {
        retval = receive_datagram(&datagram);
        if (retval < 0) {
            perror("receive failed");
            continue;
        }

        bzero(buf, DATAGRAM_DATA_SIZE);
        strncpy(buf, datagram.data, datagram.size);
        printf("Received Datagram From %s:%d Data:%s\n", datagram.srcaddr,
                datagram.srcport, buf);
    }
}