#include "stdafx.h"
#include "afxsock.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// The one and only application object

CWinApp theApp;
using namespace std;

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
	if (AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0) && AfxSocketInit())
	{
		char dados[2000];	// Buffer para receber os dados da rede
		CString ip;			// String que receberá o IP de origem
		UINT porta;			// Inteiro que recebera a Porta de origem

		CSocket UDP;		// Cria objeto UDP
		UDP.Create(4900,SOCK_DGRAM);	// inicializa o serviço UDP na porta 4900
		while(true)			// Aguarda indefinidamente os datagramas
		{
			int tam = UDP.ReceiveFrom(dados,2000,ip,porta);	// Recebe um datagrama
			if(tam>=0)		// Se o tamanho dele for válido exibe o seu conteúdo
			{
				dados[tam]=0;
				printf("(%s,%d) %s\r\n",ip,porta,dados);	// Imprime o IP,Porta do remetente e seu conteúdo
			}
		}
		UDP.Close();
	}
	return 0;
}

