1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
|
<pre>
<font color="#0000ff">// Copyright (c) 2001 David Muse</font>
<font color="#0000ff">// See the file COPYING for more information</font>
<font color="#a020f0">#include </font><font color="#ff00ff"><rudiments/inetclientsocket.h></font>
<font color="#a020f0">#include </font><font color="#ff00ff"><rudiments/error.h></font>
<font color="#a020f0">#include </font><font color="#ff00ff"><stdio.h></font>
<font color="#a020f0">#include </font><font color="#ff00ff"><time.h></font>
<font color="#a020f0">#ifdef RUDIMENTS_NAMESPACE</font>
<font color="#a52a2a"><b>using</b></font> <font color="#2e8b57"><b>namespace</b></font> rudiments;
<font color="#a020f0">#endif</font>
<font color="#2e8b57"><b>int</b></font> main(<font color="#2e8b57"><b>int</b></font> argc, <font color="#2e8b57"><b>const</b></font> <font color="#2e8b57"><b>char</b></font> **argv) {
<font color="#a52a2a"><b>if</b></font> (argc<<font color="#ff00ff">3</font>) {
printf(<font color="#ff00ff">"usage: inetclntbench [buffer size] [bytesperiteration] [iterations]</font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>);
exit(<font color="#ff00ff">0</font>);
}
<font color="#2e8b57"><b>uint32_t</b></font> buffersize=
charstring::toUnsignedInteger(argv[<font color="#ff00ff">1</font>]);
<font color="#2e8b57"><b>uint32_t</b></font> bytesperiteration=
charstring::toUnsignedInteger(argv[<font color="#ff00ff">2</font>]);
<font color="#2e8b57"><b>uint32_t</b></font> iterations=
charstring::toUnsignedInteger(argv[<font color="#ff00ff">3</font>]);
<font color="#2e8b57"><b>char</b></font> *bytes=<font color="#a52a2a"><b>new</b></font> <font color="#2e8b57"><b>char</b></font>[bytesperiteration];
<font color="#a52a2a"><b>if</b></font> (!bytes) {
printf(<font color="#ff00ff">"buffer allocation failed</font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>);
exit(<font color="#ff00ff">0</font>);
}
<font color="#a52a2a"><b>for</b></font> (<font color="#2e8b57"><b>uint32_t</b></font> i=<font color="#ff00ff">0</font>; i<bytesperiteration; i++) {
bytes[i]=<font color="#ff00ff">'C'</font>;
}
<font color="#0000ff">// create an inet socket client</font>
inetclientsocket clnt;
<font color="#0000ff">// connect to a server on localhost, listening on port 8000</font>
<font color="#a52a2a"><b>if</b></font> (clnt.connect(<font color="#ff00ff">"localhost"</font>,<font color="#ff00ff">8000</font>,-<font color="#ff00ff">1</font>,-<font color="#ff00ff">1</font>,<font color="#ff00ff">1</font>,<font color="#ff00ff">1</font>)<<font color="#ff00ff">0</font>) {
printf(<font color="#ff00ff">"connect failed: </font><font color="#6a5acd">%s</font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>,error::getErrorString());
exit(<font color="#ff00ff">1</font>);
}
clnt.setWriteBufferSize(buffersize);
<font color="#2e8b57"><b>time_t</b></font> start=time(<font color="#ff00ff">NULL</font>);
<font color="#a52a2a"><b>for</b></font> (<font color="#2e8b57"><b>uint32_t</b></font> i=<font color="#ff00ff">0</font>; i<iterations; i++) {
clnt.write(bytes,bytesperiteration);
}
clnt.flushWriteBuffer(-<font color="#ff00ff">1</font>,-<font color="#ff00ff">1</font>);
<font color="#2e8b57"><b>time_t</b></font> end=time(<font color="#ff00ff">NULL</font>);
printf(<font color="#ff00ff">"total time=</font><font color="#6a5acd">%d</font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>,end-start);
<font color="#0000ff">// close the connection to the server</font>
clnt.close();
}
</pre>
|