<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://pct.wiki.uib.no/index.php?action=history&amp;feed=atom&amp;title=Client_benchmark.cpp</id>
	<title>Client benchmark.cpp - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://pct.wiki.uib.no/index.php?action=history&amp;feed=atom&amp;title=Client_benchmark.cpp"/>
	<link rel="alternate" type="text/html" href="https://pct.wiki.uib.no/index.php?title=Client_benchmark.cpp&amp;action=history"/>
	<updated>2026-05-05T03:55:46Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://pct.wiki.uib.no/index.php?title=Client_benchmark.cpp&amp;diff=779&amp;oldid=prev</id>
		<title>Wac002: Created page with &quot; &lt;syntaxhighlight lang=&quot;cpp&quot;&gt; #include &lt;errno.h&gt; #include &lt;netdb.h&gt; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;sys/socket.h&gt; #include &lt;unistd.h&gt;  #include &lt;chrono&gt; #incl...&quot;</title>
		<link rel="alternate" type="text/html" href="https://pct.wiki.uib.no/index.php?title=Client_benchmark.cpp&amp;diff=779&amp;oldid=prev"/>
		<updated>2020-09-17T21:49:11Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot; &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt; #include &amp;lt;errno.h&amp;gt; #include &amp;lt;netdb.h&amp;gt; #include &amp;lt;stdio.h&amp;gt; #include &amp;lt;stdlib.h&amp;gt; #include &amp;lt;sys/socket.h&amp;gt; #include &amp;lt;unistd.h&amp;gt;  #include &amp;lt;chrono&amp;gt; #incl...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;errno.h&amp;gt;&lt;br /&gt;
#include &amp;lt;netdb.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;sys/socket.h&amp;gt;&lt;br /&gt;
#include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;chrono&amp;gt;&lt;br /&gt;
#include &amp;lt;cstring&amp;gt;&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;string&amp;gt;&lt;br /&gt;
#include &amp;lt;thread&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main(int argc, char *argv[]) {&lt;br /&gt;
  int s;&lt;br /&gt;
  unsigned short port;&lt;br /&gt;
  struct sockaddr_in server;&lt;br /&gt;
  struct hostent *hp;&lt;br /&gt;
  char buf[4096];&lt;br /&gt;
&lt;br /&gt;
  // if (argc != 3) {&lt;br /&gt;
  //  printf(&amp;quot;Usage: %s &amp;lt;host address&amp;gt; &amp;lt;port&amp;gt; \n&amp;quot;, argv[0]);&lt;br /&gt;
  //  exit(1);&lt;br /&gt;
  //}&lt;br /&gt;
  port = htons(atoi(argv[2]));&lt;br /&gt;
&lt;br /&gt;
  /* Create a datagram socket in the internet domain and use the&lt;br /&gt;
   * default protocol (UDP).&lt;br /&gt;
   */&lt;br /&gt;
&lt;br /&gt;
  if ((s = socket(AF_INET, SOCK_DGRAM, 0)) &amp;lt; 0) {&lt;br /&gt;
    perror(&amp;quot;socket()&amp;quot;);&lt;br /&gt;
    exit(1);&lt;br /&gt;
  }&lt;br /&gt;
  struct timeval tv;&lt;br /&gt;
  tv.tv_sec = 0;&lt;br /&gt;
  tv.tv_usec = 2000;&lt;br /&gt;
  if (setsockopt(s, SOL_SOCKET, SO_RCVTIMEO, &amp;amp;tv, sizeof(tv)) &amp;lt; 0) {&lt;br /&gt;
    perror(&amp;quot;Error setting timeout&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  // printf(tvStart.tv_sec);&lt;br /&gt;
  /* Set up the server name */&lt;br /&gt;
  server.sin_family = AF_INET; /* Internet Domain    */&lt;br /&gt;
  server.sin_port = port;      /* Server Port        */&lt;br /&gt;
  std::string ip = &amp;quot;192.168.2.20&amp;quot;;&lt;br /&gt;
  hp = gethostbyname(ip.c_str());&lt;br /&gt;
  if (hp == 0) perror(&amp;quot;Unknown host&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  bcopy((char *)hp-&amp;gt;h_addr, (char *)&amp;amp;server.sin_addr, hp-&amp;gt;h_length);&lt;br /&gt;
&lt;br /&gt;
  char msg[] = {0x20, 0xFF, 0xFF, 0x8};  // Send command no ack, request&lt;br /&gt;
  /* Send the message in buf to the server */&lt;br /&gt;
  unsigned int slen = sizeof(struct sockaddr_in);&lt;br /&gt;
&lt;br /&gt;
  struct timeval tval;&lt;br /&gt;
  int rslt;&lt;br /&gt;
  int packNum = 65535;&lt;br /&gt;
&lt;br /&gt;
  std::chrono::high_resolution_clock nowTimePoint2;&lt;br /&gt;
&lt;br /&gt;
  auto statSize = 10;&lt;br /&gt;
  std::cout &amp;lt;&amp;lt; &amp;quot;start\n&amp;quot;;&lt;br /&gt;
  auto recvdBytes = 0;&lt;br /&gt;
  auto timeouts = 0;&lt;br /&gt;
  msg[0] = 0x60;&lt;br /&gt;
  if (sendto(s, msg, (sizeof(msg)), 0, (struct sockaddr *)&amp;amp;server,&lt;br /&gt;
             sizeof(server)) &amp;lt; 0) {&lt;br /&gt;
    perror(&amp;quot;sendto()&amp;quot;);&lt;br /&gt;
    exit(2);&lt;br /&gt;
  }&lt;br /&gt;
  std::this_thread::sleep_for(std::chrono::milliseconds(100));&lt;br /&gt;
&lt;br /&gt;
  for (size_t l = 2480; l &amp;lt;= 4080; l += 100) {&lt;br /&gt;
    timeouts = 0;&lt;br /&gt;
    msg[3] = (l / 16);&lt;br /&gt;
    // printf(&amp;quot;%hhX&amp;quot;, msg[3]);&lt;br /&gt;
    std::cout &amp;lt;&amp;lt; (l / 16) * 16 &amp;lt;&amp;lt; &amp;#039;,&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
    for (size_t i = 0; i &amp;lt; statSize; i++) {&lt;br /&gt;
      msg[0] = 0x20;&lt;br /&gt;
      auto start = std::chrono::time_point_cast&amp;lt;std::chrono::nanoseconds&amp;gt;(&lt;br /&gt;
          nowTimePoint2.now());&lt;br /&gt;
      if (sendto(s, msg, (sizeof(msg)), 0, (struct sockaddr *)&amp;amp;server,&lt;br /&gt;
                 sizeof(server)) &amp;lt; 0) {&lt;br /&gt;
        perror(&amp;quot;sendto()&amp;quot;);&lt;br /&gt;
        exit(2);&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      for (size_t j = 0; j &amp;lt; packNum; j++) {&lt;br /&gt;
        recvdBytes =&lt;br /&gt;
            recvfrom(s, buf, sizeof(buf), 0, (struct sockaddr *)&amp;amp;server, &amp;amp;slen);&lt;br /&gt;
        if (recvdBytes &amp;lt;= 0) {&lt;br /&gt;
          // std::cout &amp;lt;&amp;lt; &amp;quot;ERROR IN RECV\n&amp;quot;;&lt;br /&gt;
          timeouts++;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      auto stop = std::chrono::time_point_cast&amp;lt;std::chrono::nanoseconds&amp;gt;(&lt;br /&gt;
          nowTimePoint2.now());&lt;br /&gt;
      auto duration = stop - start;&lt;br /&gt;
      std::cout &amp;lt;&amp;lt; timeouts &amp;lt;&amp;lt; &amp;#039;,&amp;#039;;&lt;br /&gt;
std::cout &amp;lt;&amp;lt; static_cast&amp;lt;unsigned int&amp;gt;(&lt;br /&gt;
                       (packNum * 1000.f * 1000.f * 1000.f) / duration.count() *&lt;br /&gt;
                       1.f)&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;&amp;lt; &amp;#039;,&amp;#039;;&lt;br /&gt;
      msg[0] = 0x60;&lt;br /&gt;
      if (sendto(s, msg, (sizeof(msg)), 0, (struct sockaddr *)&amp;amp;server,&lt;br /&gt;
                 sizeof(server)) &amp;lt; 0) {&lt;br /&gt;
        perror(&amp;quot;sendto()&amp;quot;);&lt;br /&gt;
        exit(2);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    std::cout &amp;lt;&amp;lt; &amp;#039;\n&amp;#039;;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* Deallocate the socket */&lt;br /&gt;
  close(s);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wac002</name></author>
	</entry>
</feed>