Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #include "UDPAPIClientTest.h"
00025
00026 #include <stdlib.h>
00027 #include <stdio.h>
00028 #include <string.h>
00029 #include <arpa/inet.h>
00030
00031
00032 char sendBuff[] = "I'm Alive.";
00033
00034 FILE *fp;
00035
00036 void
00037 UDPClientTestInit()
00038 {
00039 TSCont cont;
00040 unsigned long ip;
00041 TSMutex readMutexp;
00042
00043 ip = inet_addr("209.131.48.79");
00044 readMutexp = TSMutexCreate();
00045 cont = TSContCreate(&UDPClient_handle_callbacks, readMutexp);
00046 fp = fopen("UDPAPI.dbg", "a+");
00047 fprintf(fp, "UDPClient Init called\n");
00048 fclose(fp);
00049 INKUDPBind(cont, ip, 9999);
00050
00051 }
00052
00053 int
00054 UDPClient_handle_callbacks(TSCont cont, TSEvent event, void *e)
00055 {
00056 INKUDPacketQueue packetQueue;
00057 INKUDPPacket packet;
00058 TSIOBufferBlock recvBuffBlock;
00059 unsigned int destIp = inet_addr("209.131.48.79");
00060 int destPort = 1813;
00061 INKUDPConn UDPConn;
00062 TSIOBufferReader reader;
00063 TSIOBuffer iobuffer;
00064 const char *buf;
00065 int avail, total_len = 0;
00066 char recvBuff[1024];
00067 fp = fopen("UDPAPI.dbg", "a+");
00068
00069 switch (event) {
00070
00071 case TS_NET_EVENT_DATAGRAM_OPEN:
00072 UDPConn = (INKUDPConn) e;
00073 INKUDPRecvFrom(cont, UDPConn);
00074 INKUDPSendTo(cont, UDPConn, destIp, destPort, sendBuff, strlen(sendBuff));
00075 fprintf(fp, "sent %s\n.", (const char *) sendBuff);
00076
00077 break;
00078
00079 case TS_NET_EVENT_DATAGRAM_READ_READY:
00080 fprintf(fp, "read ready called\n.");
00081 packetQueue = (INKUDPacketQueue) e;
00082
00083 while ((packet = INKUDPPacketGet(packetQueue)) != NULL) {
00084 recvBuffBlock = INKUDPPacketBufferBlockGet(packet);
00085
00086 iobuffer = TSIOBufferCreate();
00087 reader = TSIOBufferReaderAlloc(iobuffer);
00088 TSIOBufferAppend(iobuffer, recvBuffBlock);
00089 buf = TSIOBufferBlockReadStart(recvBuffBlock, reader, &avail);
00090
00091 if (avail > 0) {
00092
00093 for (int i = 0; i < avail; i++)
00094 fprintf(fp, "%c", *(buf + i));
00095
00096
00097 memcpy((char *) &recvBuff + total_len, buf, avail);
00098 TSIOBufferReaderConsume(reader, avail);
00099 total_len += avail;
00100 }
00101
00102
00103 INKUDPPacketDestroy(packet);
00104 TSIOBufferReaderFree(reader);
00105 TSIOBufferDestroy(iobuffer);
00106 }
00107
00108 break;
00109
00110 case TS_NET_EVENT_DATAGRAM_WRITE_COMPLETE:
00111 break;
00112
00113 }
00114 fclose(fp);
00115 return TS_EVENT_CONTINUE;
00116 }