a96b9b35b3e7a8070dc24cff811c3f5ee9c1cf45
Christian Heimke BlinkenLib v.0.4 (2005-07-02)

Christian Heimke authored 13 years ago

1) /* BlinkenLib
Christian Heimke BlinkenLib v.0.5.1 (2005-12...

Christian Heimke authored 13 years ago

2)  * version 0.5.1 date 2005-12-14
Christian Heimke BlinkenLib v.0.4 (2005-07-02)

Christian Heimke authored 13 years ago

3)  * Copyright 2004-2005 Stefan Schuermans <1stein@schuermans.info>
4)  * Copyleft: GNU public license - http://www.gnu.org/copyleft/gpl.html
5)  * a blinkenarea.org project
6)  */
7) 
8) #include <stdio.h>
9) #include <stdlib.h>
10) #include <string.h>
Christian Heimke BlinkenLib v.0.5.1 (2005-12...

Christian Heimke authored 13 years ago

11) #include <unistd.h>
Christian Heimke BlinkenLib v.0.4 (2005-07-02)

Christian Heimke authored 13 years ago

12) #include <sys/types.h>
13) #include <sys/socket.h>
14) #include <netinet/in.h>
15) #include <arpa/inet.h>
16) 
17) #include "BlinkenLib.h"
18) 
19) int main( int argCnt, char * * args )
20) {
21)   int i, udpSocket, bound, val, timeout;
22)   char txt[64];
23)   unsigned short port;
24)   struct sockaddr_in addr;
25)   stBlinkenMovie * pMovie;
26) 
27)   //print info
28)   printf( "BlinkenLib - BlinkenRecv\n"
Christian Heimke BlinkenLib v.0.5.1 (2005-12...

Christian Heimke authored 13 years ago

29)           "version 0.5.1 date 2005-12-14\n"
Christian Heimke BlinkenLib v.0.4 (2005-07-02)

Christian Heimke authored 13 years ago

30)           "Copyright 2004-2005 Stefan Schuermans <1stein@schuermans.info>\n"
31)           "Copyleft: GNU public license - http://www.gnu.org/copyleft/gpl.html\n"
Christian Heimke BlinkenLib v.0.5 (2005-12-06)

Christian Heimke authored 13 years ago

32)           "a blinkenarea.org project\n\n" );
Christian Heimke BlinkenLib v.0.4 (2005-07-02)

Christian Heimke authored 13 years ago

33) 
34)   //print syntax
35)   if( argCnt <= 1 )
36)   {
37)     printf( "syntax: %s <parameter> [...]\n\n"
38)             "parameters:\n"
39)             "  -l [<ip>:]<port>\n"
40)             "     local address (defaults to 0.0.0.0:2323)\n"
41)             "     must occur before -r and -o, may only occur once\n"
42)             "  -r <ip>[:<port>]\n"
43)             "     remote addess (defaults to every remote address)\n"
44)             "  -t <milliseconds>\n"
45)             "     set timeout (to detect movie end, defaults to 5000)\n"
46)             "  -o <file>\n"
47)             "     receive movie and write it to file (*.blm, *.bmm, *.bml, *.bbm)\n\n",
48)             args[0] );
49)     return 0;
50)   }
51) 
52)   //create udp socket
53)   udpSocket = socket( AF_INET, SOCK_DGRAM, IPPROTO_UDP );
54)   if( udpSocket == -1 )
55)   {
56)     printf( "cannot create UDP socket\n" );
57)     return -1;
58)   }
59)   bound = 0;
60) 
61)   //process parameters
62)   timeout = 5000;
63)   for( i = 1; i < argCnt; i++ )
64)   {
65) 
66)     //local address
67)     if( strcmp( args[i], "-l" ) == 0 )
68)     {
69)       if( i + 1 < argCnt )
70)       {
71)         i++;
72)         if( sscanf( args[i], "%32[0-9.]:%hu", txt, &port ) == 2 )
73)         {
74)           addr.sin_family = AF_INET;
75)           addr.sin_port = htons( port );
76)           addr.sin_addr.s_addr = inet_addr( txt );
77)           if( bind( udpSocket, (struct sockaddr *)&addr, sizeof( addr ) ) != 0 )
78)             printf( "could not set local address to \"%s\"\n", args[i] );
79)           else
80)             bound = 1;
81)         }
82)         else if( sscanf( args[i], "%hu", &port ) == 1 )
83)         {
84)           addr.sin_family = AF_INET;
85)           addr.sin_port = htons( port );
86)           addr.sin_addr.s_addr = htonl( INADDR_ANY );
87)           if( bind( udpSocket, (struct sockaddr *)&addr, sizeof( addr ) ) != 0 )
88)             printf( "could not set local address to \"%s\"\n", args[i] );
89)           else
90)             bound = 1;
91)         }
92)         else
93)           printf( "invalid local address \"%s\"\n", args[i] );
94)       }
95)       else
96)         printf( "missing local address for \"-l\"\n" );
97)     }
98) 
99)     //remote address
100)     else if( strcmp( args[i], "-r" ) == 0 )
101)     {
102)       if( i + 1 < argCnt )
103)       {
104)         i++;
105)         if( sscanf( args[i], "%32[0-9.]:%hu", txt, &port ) == 2 )
106)         {
107)           addr.sin_family = AF_INET;
108)           addr.sin_port = htons( port );
109)           addr.sin_addr.s_addr = inet_addr( txt );
110)           if( connect( udpSocket, (struct sockaddr *)&addr, sizeof( addr ) ) != 0 )
111)             printf( "could not set remote address to \"%s\"\n", args[i] );
112)         }
113)         else if( sscanf( args[i], "%32[0-9.]", txt ) == 1 )
114)         {
115)           addr.sin_family = AF_INET;
116)           addr.sin_port = htons( 23230 );
117)           addr.sin_addr.s_addr = inet_addr( txt );
118)           if( connect( udpSocket, (struct sockaddr *)&addr, sizeof( addr ) ) != 0 )
119)             printf( "could not set remote address to \"%s\"\n", args[i] );
120)         }
121)         else
122)           printf( "invalid remote address \"%s\"\n", args[i] );
123)       }
124)       else
125)         printf( "missing remote address for \"-r\"\n" );
126)     }
127) 
128)     //timeout
129)     else if( strcmp( args[i], "-t" ) == 0 )
130)     {
131)       if( i + 1 < argCnt )
132)       {
133)         i++;
Christian Heimke BlinkenLib v.0.5.1 (2005-12...

Christian Heimke authored 13 years ago

134)         if( sscanf( args[i], "%u", &val ) == 1 )