#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
#include "SDL/SDL_net.h"
#include <assert.h>
#include <iostream>
#include <string>

#include "net.cpp"

//class server{
//	UDPsocket sd;       /* Socket descriptor */
//	UDPpacket *p;       /* Pointer to packet memory */
//	int quit;
//	char buff[1204];
//public:
//    server(unsigned int port);
//    ~server();
//    void loop();
//    
//    bool send(char msg[]);
//    char * recv();
//};

//server::server(unsigned int port)
//{
//	/* Initialize SDL_net */
//	assert(!(SDLNet_Init() < 0));
// 
//	/* Open a socket */
//	assert((sd = SDLNet_UDP_Open(2000)));
// 
//	/* Make space for the packet */
//	assert((p = SDLNet_AllocPacket(512)));
//}

//server::~server()
//{
//	/* Clean and exit */
//	SDLNet_FreePacket(p);
//	SDLNet_Quit();
//}

//bool server::send(char msg[])
//{
//    return true;
//}

//char * server::recv()
//{

//	/* Wait a packet. UDP_Recv returns != 0 if a packet is coming */
//	if (SDLNet_UDP_Recv(sd, p))
//	{
//		printf("UDP Packet incoming\n");
//		printf("\tChan:    %d\n", p->channel);
//		printf("\tData:    %s\n", (char *)p->data);
//		printf("\tLen:     %d\n", p->len);
//		printf("\tMaxlen:  %d\n", p->maxlen);
//		printf("\tStatus:  %d\n", p->status);
//		printf("\tAddress: %x %x\n", p->address.host, p->address.port);
//	}
//    return buff;
//}

//void server::loop()
//{
//	/* Main loop */

//}
 
int main(int argc, char **argv)
{
    udp serv(2000);
    while(1)
        serv.recv();
    
	return EXIT_SUCCESS;
}
