示例#1
0
void *network_data(void *arg)
{
	int childlen;
	struct sockaddr_in childaddr;
	
	childlen = sizeof(childaddr);
	while ( !die )
	{
		printf("### Wait data client\n");
		#ifdef WIN32
		data_client_socket = accept(data_socket, NULL, NULL);
		if (data_client_socket == INVALID_SOCKET) {
			printf("Error on accept() for data, exit data thread. %d\n", WSAGetLastError());
			closesocket(data_socket);
			WSACleanup();
			break;
		}
		#else
		data_child = accept(s_data, (struct sockaddr *)&childaddr, (unsigned int *)&childlen);
		if ( data_child < 0 )
		{
			fprintf(stderr, "Error on accept() for data, exit data thread.\n");
			break;
		}
		#endif
		
		printf("### Got data client\n");
		data_connected = 1;
		
		send_policy_file(data_child);
		
		if ( pthread_create(&data_in_thread, NULL, data_in, NULL) )
		{
			fprintf(stderr, "Error on pthread_create() for data_in\n");
		}
		
		if ( pthread_create(&data_out_thread, NULL, data_out, NULL) )
		{
			fprintf(stderr, "Error on pthread_create() for data_out\n");
		}
	}
	
	return NULL;
}
示例#2
0
void *network_depth(void *arg)
{
	int childlen;
	struct sockaddr_in childaddr;
	
	childlen = sizeof(childaddr);
	while ( !die )
	{
		printf("### Wait depth client\n");
		depth_child = accept(s_depth, (struct sockaddr *)&childaddr, (unsigned int *)&childlen);
		if ( network_depth < 0 )
		{
			fprintf(stderr, "Error on accept() for depth, exit depth thread.\n");
			break;
		}
		
		printf("### Got depth client\n");
		send_policy_file(depth_child);
		depth_connected = 1;
		freenect_start_depth(f_dev);
	}
	
	return NULL;
}