SOL9 2.0 Sample: SocketDatagramReceiver

SOL9 2.0 Samples

1 Screenshot


2 Source code

/*
 * 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");
    }
        
}

Last modified: 11 Nov 2009

Copyright (c) 2009 Antillia.com ALL RIGHTS RESERVED.