2 #include "platform_adpt.h"
6 int sendData(RUDPSOCKET s)
10 memset(line, '1' + i%36, 3000);
13 unsigned long nTotal = 0, nByt = 0;
14 t0 = t_prev = time(NULL);
15 for(i=0; 0<50000; i++)
18 v[0].iov_base = v[1].iov_base = v[2].iov_base = line;
23 int onesent = v[0].iov_len + v[1].iov_len + v[2].iov_len;
28 rlt = RUDPSendV(s, 1, v, 3, 0);
31 rlt = RUDPSendV(s, 0/*1*/, v, 3, 0);
34 printf("RUDPSend error: %d\n", rlt);
41 fprintf(stderr, "rate: Avg.: %d B/s, Rt. %dB/s \r", nTotal/(t-t0), nByt);
48 printf("***************************************\n");
52 RUDPSend(s, 0, line, 1, 0);
53 printf("all data sent.\n");
58 void recvData(RUDPSOCKET a)
65 struct timeval tv = { 0, 500000 };
66 int flag = RUDPSELECT_READABLE, rlt;
67 if( 1 )//(rlt = RUDPSelectSock(a, -1, flag, &tv)) > 0)
69 if((len = RUDPRecv(a, &chno, line, 2000, 0)) > 0)
73 //fprintf(stderr, "Packet %d from chn 0\n", cnt);
77 //printf("%s\n", line);
78 if(line[0] == '\0') break;
82 fprintf(stderr, "RUDPRecv: %d\n", len);
87 printf("ERROR: RUDPSelectSock: %d\n", rlt);
91 printf("receiving finished.\n");
93 void *threadSend(void *p)
95 RUDPSOCKET a = (RUDPSOCKET*)p;
96 pthread_detach(pthread_self());
106 void* threadRecv(void *p)
108 RUDPSOCKET a = (RUDPSOCKET*)p;
109 pthread_detach(pthread_self());
120 //Usage: rudpclt [-a] [server] [port]
121 // ------- -a: asynchronous
122 // ------- server: default is 127.0.0.1,
123 // ------- port: 5001 by default
124 #define SERVER_SEND 0x01
125 #define SERVER_RECV 0x02
126 int main(int argc, char *argv[])
128 struct sockaddr_in sai;
130 int rlt, i, async = 0;
140 memset(&sai, 0, sizeof(sai));
141 sai.sin_family = AF_INET;
142 sai.sin_addr.s_addr = inet_addr("127.0.0.1");
143 sai.sin_port = htons(5001);
144 sa_len = sizeof(sai);
146 for(i=1; i<argc; i++)
148 if(strchr(argv[i], '.'))
149 sai.sin_addr.s_addr = inet_addr(argv[i]);
151 sai.sin_port = htons(atoi(argv[i]));
155 //opt = 256; RUDPSetSockOpt(s, OPT_RUDP_RCVBUF, &opt, sizeof(int));
156 if( (rlt = RUDPConnect(s, (struct sockaddr*)&sai, sizeof(sai))) == 0)
160 while(fgets(line, 1024, stdin))
162 if(strncmp(line, "quit", 4) == 0) break;
163 RUDPSend(s, chn, line, strlen(line)+1, 0);