/*
* SocketDatagramReceiver.cpp
* Copyright (c) 2009 Antillia.com TOSHIYUKI ARAI. ALL RIGHTS RESERVED.
*/
#include <sol\SocketDatagram.h>
#include <sol\WSAInitializer.h>
class SocketDatagramReceiver{
public:
SocketDatagramReceiver()
{
}
public:
void recv(unsigned short port) {
SocketDatagram socketDatagram;
InetAddress inet(port);
socketDatagram.bind(inet);
char buf[SIZE_1KB];
while (1) {
char buf[SIZE_1KB];
try {
//1 Receive a string.
//Blocked, waiting infinitely to recv data.
int rc = socketDatagram.recvFrom(port, buf, sizeof(buf));
if (rc >0) {
printf("recv: string=[%s] len=%d(bytes)\n",
buf, rc);
//2 ReplyBack to a sender
const char* ok= "OK. Got a datagram.";
int r = socketDatagram.replyTo(ok, strlen(ok));
if (r >0) {
printf("sent:%s\n", ok);
}
}
if (rc <=0) {
printf("Exit loop\n");
break;
}
} catch (Exception& ex) {
ex.printf();
} catch (...) {
}
}
socketDatagram.close();
}
};
/**
*
*/
void _tmain(int argc, TCHAR* argv[])
{
WSAInitializer wsaInitializer;
try {
printf("Create SocketDatagramReceiver\n");
SocketDatagramReceiver receiver;
//Recv data from port=32000
receiver.recv(32000);
} catch (Exception& ex) {
ex.printf();
} catch (...) {
printf("Exception\n");
}
}
|