bool	CLevel::net_start_client2				()
{
	if(psNET_direct_connect)
	{
		Server->create_direct_client();
	}

	connected_to_server = Connect2Server(*m_caClientOptions);
	
	return true;
}
int initialize(int argc, char *argv[])
{
	tv.tv_sec = 2;
	tv.tv_usec = 500000;
	FD_ZERO(&list);			// clear list
	FD_ZERO(&list_copy);	// clear temporary sets
	FD_SET(STDIN, &list);	// Add stdin
	fdmax = STDIN; // The biggest file descriptor
	yes = 1;
	ofnum = 0;//number of open files
	fdnum = 0;//number of file descriptors

	int cI;
	for(cI=0;cI<CLIENT_CACHE_LINES;cI++)
	{
		metacache[cI][0] = 0;//free
		metacache[cI][1] = -1;//TAG
		metacache[cI][2] = 0;//LRU
		metacache[cI][3] = -1;//OFi
	}

	srand (time(NULL));//randomize rand function
	int2str(rand() % (65536 - 1025) + 1025, myPORT, 10);//get a random port number for my pfs client
	memset(&hints, 0, sizeof(hints));
	hints.ai_family = AF_UNSPEC;
	hints.ai_socktype = SOCK_STREAM;
	getownip(myIP);	//inet_ntop(remoteaddr.ss_family, get_address((struct sockaddr*)&remoteaddr), myIP, INET6_ADDRSTRLEN);
	printf("My IP address and Port number are %s %s\n",myIP,myPORT);

	if(argc!=4){
		fprintf(stderr,"Usage: pfs filename mmip mmport\n");
		strcpy(mmIP, MMIP);
		strcpy(mmPORT, MMPORT);
		//exit(1);
	} else {
		strcpy(mmIP, argv[2]);
		strcpy(mmPORT, argv[3]);
	}	//MM's IP&PORT

	mmFD = Connect2Server(mmIP, mmPORT);//Connect to Meta-data Manager (MM)
	FD_SET(mmFD, &list);//add to fd list
	fdmax = mmFD; // The biggest file descriptor
	char rpacket[BUFFER_SIZE] = ""; //Buffer for client data
	int size = MMR(rpacket, BUFFER_SIZE);//IMPORT 4 127.0.0.1 10001 127.0.0.1 10002 127.0.0.1 10003 127.0.0.1 10004 END.
	int fsnumI = findspace(rpacket,0,1);//File server number Index
	char packettype[6];
	strncpy(packettype, rpacket, fsnumI-1);
	packettype[fsnum-1] = '\0';
	if(!strcmp(packettype, "IMPORT"))
	{
		int firstI = findspace(rpacket,fsnumI,1);//First file server Index
		int nextI;// = findspace(packet,ffsI,1); //Next file server Index
		fsnum = str2int(rpacket+fsnumI,firstI-fsnumI-1);//number of file servers
		int i;
		for(i=0;i<fsnum;i++)
		{
			nextI = findspace(rpacket,firstI,1);//Port index
			strncpy(fs[i].ip, rpacket + firstI, nextI - firstI - 1);
			fs[i].ip[nextI - firstI - 1] = '\0';
			firstI = findspace(rpacket,nextI,1);//IP index of next file server
			strncpy(fs[i].port, rpacket + nextI, firstI - nextI - 1);
			fs[i].port[firstI - nextI - 1] = '\0';
		}
		for(i=0;i<fsnum;i++)
		{
			fs[i].fd = Connect2Server(fs[i].ip, fs[i].port);//Connect to FS
			FD_SET(fs[i].fd, &list);//add to fd list
			fdmax = fs[i].fd; // The biggest file descriptor
			size = recv(fs[i].fd, rpacket, sizeof(rpacket), 0);
			if (size == -1)
				perror("Error in receiving!");
			rpacket[size] = '\0';
			printf("Server: %s\n",rpacket);//IMPORT 4 127.0.0.1 10001 127.0.0.1 10002 127.0.0.1 10003 127.0.0.1 10004 END.
		}
	}
	else
		printf("No File Servers Imported!");


	pthread_t harvesterThr, flusherThr;	//Buffer Management Threads
	pthread_create(&harvesterThr, NULL, (void *) harvester, NULL); //??? debug it!
	pthread_create(&flusherThr, NULL, (void *) flusher, NULL);
	//pthread_join(harvesterThr, NULL);//every x-sec??? or when falls under threshold!???
	//pthread_join(flusherThr, NULL);//every 30 seconds???

	return 0;
}