otsdaq-mu2e-stm  5.02.01
client.cc
1 
5 /********************************************************************/
6 
7 #include <fstream>
8 #include <iostream>
9 #include <vector>
10 
11 #include <arpa/inet.h>
12 #include <string.h> //memset
13 #include <sys/socket.h>
14 #include <sys/types.h>
15 
16 #include <fcntl.h> // for open
17 #include <unistd.h> // for close
18 
19 using namespace std;
20 
21 static const uint16_t maxGbit = 10; // Gbits
22 static const double maxbytes = maxGbit * 1e9 * 0.125; // bytes
23 
24 static const uint16_t packetSize = 8198; // bytes
25 static const uint16_t BUFLEN = packetSize / 2;
26 
27 struct packet
28 {
29  uint size = 2 * BUFLEN;
30  int16_t data[BUFLEN] = {};
31 };
32 
33 struct sockaddr_in servaddr, cliaddr;
34 
35 int slen = sizeof(cliaddr);
36 
37 void die(char* s)
38 {
39  perror(s);
40  exit(1);
41 }
42 
43 int createClient()
44 {
45  int sock;
46 
47  // Creating UDP socket file descriptor
48  if((sock = socket(AF_INET, SOCK_DGRAM, 0)) < 0)
49  {
50  perror("socket creation failed");
51  exit(EXIT_FAILURE);
52  }
53 
54  // Zero UDP server address structure
55  memset(&servaddr, 0, sizeof(servaddr));
56 
57  // Fill UDP server information
58  servaddr.sin_family = AF_INET;
59  servaddr.sin_port = htons(51872);
60  servaddr.sin_addr.s_addr = inet_addr("192.168.34.12");
61 
62  return sock;
63 }
64 
65 // Send packet to socket
66 int sendPacket(struct packet& p, int socket)
67 {
68  usleep(1);
69 
70  sendto(socket,
71  p.data,
72  p.size,
73  MSG_CONFIRM,
74  (const struct sockaddr*)&servaddr,
75  sizeof(servaddr));
76 
77  return 1;
78 }
79 
80 int main()
81 {
82  int socket = createClient();
83 
84  packet dataPacket;
85 
86  uint packetNum = int(maxbytes) / packetSize;
87 
88  uint packetCount = 0;
89 
90  for(int i = 0; i < packetNum; i++)
91  packetCount += sendPacket(dataPacket, socket);
92 
93  cout << "Sent " << packetCount << " packets\n" << endl;
94 
95  return 1;
96 }
Definition: data.hh:4
Definition: queue.hh:10