Code:
my dialog procedure:


BOOL CALLBACK MainDiaProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam)
{
	switch(Message)
	{				

		case WM_INITDIALOG:
			{
				start_listen(dia_hwnd);



			}
		break;

		
		case SOCKET_READY: 
			{
				MessageBox(dia_hwnd, "I GOT MSG!!", "YOU ARE FLOODING!",MB_ICONEXCLAMATION | MB_OK);
			switch (LOWORD(wParam)) 
			{
			case FD_READ:
				recv(listen_socket, recv_buff, sizeof(recv_buff),0);
				break;}
			}

// and so on








the following is the function i use to create a listening socket.
i called the function "start_listen(dia_hwnd);" on initialize of the dialog box to get a socket listening.

Code:
char recv_buff[600];
	
SOCKET listen_socket ;

char *start_listen(HWND what_hwnd)
	
{		

	// Declaring a buffer on the stack
//char *buffer = new char[256];	// or on the heap
	
		WSAAsyncSelect(listen_socket, what_hwnd,  SOCKET_READY,FD_READ|FD_WRITE|FD_ACCEPT|FD_CONNECT ); // i put this into WSAAsyncSelect mode)


WSADATA wsaData;
WORD	sockVersion = MAKEWORD(1, 1);
	int nret;
	SOCKADDR_IN serverInfo ;

	ZeroMemory(recv_buff, 600);
		
	WSAStartup(sockVersion, &wsaData);

		
	serverInfo.sin_family = AF_INET;
	serverInfo.sin_addr.s_addr = INADDR_ANY;
	serverInfo.sin_port = htons(9000);

	

	listen_socket = socket(AF_INET,			// Go over TCP/IP
					SOCK_DGRAM,		
					IPPROTO_UDP);// Use UDP

	nret = bind(listen_socket, (LPSOCKADDR)&serverInfo, sizeof(struct sockaddr));
				
	if (listen_socket == INVALID_SOCKET) 
				
	{
		nret = WSAGetLastError();
		ReportError(nret, "socket()");
		WSACleanup();
		return "ERR:Bind";
	}
	nret = listen(listen_socket, 30);


  
	if (nret == SOCKET_ERROR) 
	{
		return "ERR:C NO RECV";
	}
				
	ZeroMemory(recv_buff, 503);
}



here is the function i use to send UDP packet
Code:
char *enterhost(char *hostname , char *full_msg, HWND hwnd)
	
{		

	// Declaring a buffer on the stack
//char *buffer = new char[256];	// or on the heap
char buffer[600];	


WSADATA wsaData;
WORD	sockVersion = MAKEWORD(1, 1);
	LPHOSTENT hostEntry ;
	int nret;
	SOCKADDR_IN serverInfo ;
	SOCKET sending_socket ;

	ZeroMemory(buffer, 600);
	strcpy(buffer, full_msg);
		
	WSAStartup(sockVersion, &wsaData);

		
	hostEntry = gethostbyname(hostname); // put hostname here!
	if (!hostEntry) {
		nret = WSAGetLastError();
		ReportError(nret, "gethostbyname()");	// Report the error as before
		WSACleanup();
		return "ERR:hostbyname";
	}

	serverInfo.sin_family = AF_INET;
	serverInfo.sin_addr = *((LPIN_ADDR)*hostEntry->h_addr_list);
	serverInfo.sin_port = htons(9000);

	
	sending_socket = socket(AF_INET,			
					SOCK_DGRAM,		
					IPPROTO_UDP);		// Use TCP rather than UDP

	
	nret = bind(sending_socket, (LPSOCKADDR)&serverInfo, sizeof(struct sockaddr) );
			
	if (nret == INVALID_SOCKET) 
	{
		nret = WSAGetLastError();
		ReportError(nret, "socket()");
		WSACleanup();
		return "ERR:Bind";
	}



//	nret = send(sending_socket, buffer, strlen(buffer),  0);
	sendto(sending_socket, buffer,600,0, (SOCKADDR *) &serverInfo, sizeof(serverInfo)); // now which of these to use?
							

	if (nret == SOCKET_ERROR) 
	{
		return "ERR:C NO RECV";
	}
				
	ZeroMemory(buffer, 503);
	shutdown(sending_socket,3);
	closesocket(sending_socket);
	WSACleanup();

}
i call this function using "enterhost("localhost","hello! testing", hwnd);" on a test button on the dialog

now the problem is it seems like there is no callback message received when i press the test button

using
vc++6.0
win98
API style of coding( dunno MFC)
and have #include winsock2 with it's lib
#pragma comment(lib, "Ws2_32.lib")