📄 get-sockets.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"><html lang="en"><head><title>Winsock Programmer's FAQ: Maximum Sockets Tester</title><link rel="Stylesheet" type="text/css" href="../faq.css"></head><body bgcolor="#ffffee" text="#000000" link="#491e00" vlink="#7d2e01" alink="#da7417"><!-- ---- Header Bar ---- --><table border="0" width="95%" bgcolor="#006000" cellpadding="5" cellspacing="3" align="center"> <tr> <td align="left" bgcolor="#e0e0c0"> <font size="2" face=Verdana,Arial,Helvetica> <b><a href="../examples/username.html"><<</a></b> </font> </td> <td align="center"> <font face=Verdana,Arial,Helvetica color="#ffffee"> <p align=center class=bigger3><b> Winsock Programmer's FAQ<br> Example: Finding the Maximum Number of Open Sockets </b></p> </font> </td> <td align="right" bgcolor="#e0e0c0"> <font size="2" face=Verdana,Arial,Helvetica> <b><a href="../articles/index.html">>></a></b> </font> </td> </tr></table><!-- ---- Body Table ---- --><table width="95%" border="0" cellpadding="10"> <tr valign="top"> <td><p>Compile and run this example on a machine to find out how many socketsyou can open at one time. Beware that on Windows 95/98 machines, thisprogram will eventually take so much CPU time that you may not be ableto do anything, including stopping the program! Windows NT systems seemmuch more well-behaved about this, but they will also tend to bog downa bit while this program is running.</p><p>Note that this program only tells you how many socketsyou can create at one time. It will not tell you how manysockets you can have <i>in use</i> at one time. There is an <ahref="../advanced.html#maxsockets">item in the main FAQ</a> that coversthe issue in detail.</p><p>This program is based on Bob Quinn's get_skts.c program.</p><hr noshade size=1 color=#404040><h4 class=lmargin><a href="../examples/src/get-sockets.cpp">get-sockets.cpp</a></h4><pre><font color="0000ff"><strong>#include <font color="#008000"><stdio.h></font></strong></font><font color="0000ff"><strong>#include <font color="#008000"><winsock.h></font></strong></font><font color="0000ff"><strong>#include <font color="#008000"><sys/timeb.h></font></strong></font><font color="0000ff"><strong>#include <font color="#008000"><time.h></font></strong></font><strong>int</strong> <font color="#2040a0">doit</font><font color="4444FF">(</font><strong>int</strong>, <strong>char</strong><font color="4444FF">*</font><font color="4444FF">*</font><font color="4444FF">)</font><font color="4444FF"><strong>{</strong></font> <font color="#2040a0">SOCKET</font> <font color="#2040a0">hLastSock</font><font color="4444FF">;</font> <strong>long</strong> <font color="#2040a0">lCurrentTime</font><font color="4444FF">;</font> <font color="#2040a0">printf</font><font color="4444FF">(</font><font color="#008000">"Working on getting sockets...<font color="#77dd77">\n</font>"</font><font color="4444FF">)</font><font color="4444FF">;</font> <strong>for</strong> <font color="4444FF">(</font><strong>int</strong> <font color="#2040a0">i</font> <font color="4444FF">=</font> <font color="#FF0000">0</font><font color="4444FF">;</font> <font color="#444444">/**/</font><font color="4444FF">;</font> <font color="4444FF">+</font><font color="4444FF">+</font><font color="#2040a0">i</font><font color="4444FF">)</font> <font color="4444FF"><strong>{</strong></font> <font color="#2040a0">SOCKET</font> <font color="#2040a0">hSock</font> <font color="4444FF">=</font> <font color="#2040a0">socket</font><font color="4444FF">(</font><font color="#2040a0">AF_INET</font>, <font color="#2040a0">SOCK_STREAM</font>, <font color="#FF0000">0</font><font color="4444FF">)</font><font color="4444FF">;</font> <strong>if</strong> <font color="4444FF">(</font><font color="#2040a0">hSock</font> <font color="4444FF">!</font><font color="4444FF">=</font> <font color="#2040a0">INVALID_SOCKET</font><font color="4444FF">)</font> <font color="4444FF"><strong>{</strong></font> <strong>if</strong> <font color="4444FF">(</font><font color="#2040a0">i</font> <font color="4444FF">&</font><font color="4444FF">&</font> <font color="4444FF">!</font><font color="4444FF">(</font><font color="#2040a0">i</font> <font color="4444FF">%</font> <font color="#FF0000">1000</font><font color="4444FF">)</font><font color="4444FF">)</font> <font color="4444FF"><strong>{</strong></font> <strong>struct</strong> <font color="#2040a0">_timeb</font> <font color="#2040a0">timebuffer</font><font color="4444FF">;</font> <font color="#2040a0">_ftime</font><font color="4444FF">(</font><font color="4444FF">&</font><font color="#2040a0">timebuffer</font><font color="4444FF">)</font><font color="4444FF">;</font> <strong>char</strong><font color="4444FF">*</font> <font color="#2040a0">timeline</font> <font color="4444FF">=</font> <font color="#2040a0">ctime</font><font color="4444FF">(</font><font color="4444FF">&</font><font color="4444FF">(</font><font color="#2040a0">timebuffer</font>.<font color="#2040a0">time</font><font color="4444FF">)</font><font color="4444FF">)</font><font color="4444FF">;</font> <font color="#2040a0">printf</font><font color="4444FF">(</font><font color="#008000">"%d sockets so far, at %.19s.%hu %s"</font>, <font color="#2040a0">i</font>, <font color="#2040a0">timeline</font>, <font color="#2040a0">timebuffer</font>.<font color="#2040a0">millitm</font>, <font color="4444FF">&</font><font color="#2040a0">timeline</font><font color="4444FF">[</font><font color="#FF0000">20</font><font color="4444FF">]</font><font color="4444FF">)</font><font color="4444FF">;</font> <font color="4444FF"><strong>}</strong></font> <font color="#2040a0">hLastSock</font> <font color="4444FF">=</font> <font color="#2040a0">hSock</font><font color="4444FF">;</font> <font color="4444FF"><strong>}</strong></font> <strong>else</strong> <font color="4444FF"><strong>{</strong></font> <font color="#2040a0">printf</font><font color="4444FF">(</font><font color="#008000">"socket(%d) failed. Err: %d. Last socket: %d.<font color="#77dd77">\n</font>"</font>, <font color="#2040a0">i</font>, <font color="#2040a0">WSAGetLastError</font><font color="4444FF">(</font><font color="4444FF">)</font>, <font color="#2040a0">hLastSock</font><font color="4444FF">)</font><font color="4444FF">;</font> <strong>return</strong> <font color="#FF0000">0</font><font color="4444FF">;</font> <font color="4444FF"><strong>}</strong></font> <font color="4444FF"><strong>}</strong></font> <strong>return</strong> <font color="#FF0000">0</font><font color="4444FF">;</font><font color="4444FF"><strong>}</strong></font><strong>int</strong> <font color="#2040a0">main</font><font color="4444FF">(</font><strong>int</strong> <font color="#2040a0">argc</font>, <strong>char</strong><font color="4444FF">*</font> <font color="#2040a0">argv</font><font color="4444FF">[</font><font color="4444FF">]</font><font color="4444FF">)</font><font color="4444FF"><strong>{</strong></font> <font color="#2040a0">WSAData</font> <font color="#2040a0">wsaData</font><font color="4444FF">;</font> <strong>if</strong> <font color="4444FF">(</font><font color="#2040a0">WSAStartup</font><font color="4444FF">(</font><font color="#2040a0">MAKEWORD</font><font color="4444FF">(</font><font color="#FF0000">1</font>, <font color="#FF0000">1</font><font color="4444FF">)</font>, <font color="4444FF">&</font><font color="#2040a0">wsaData</font><font color="4444FF">)</font> <font color="4444FF">!</font><font color="4444FF">=</font> <font color="#FF0000">0</font><font color="4444FF">)</font> <font color="4444FF"><strong>{</strong></font> <strong>return</strong> <font color="#FF0000">255</font><font color="4444FF">;</font> <font color="4444FF"><strong>}</strong></font> <strong>int</strong> <font color="#2040a0">retval</font> <font color="4444FF">=</font> <font color="#2040a0">doit</font><font color="4444FF">(</font><font color="#2040a0">argc</font>, <font color="#2040a0">argv</font><font color="4444FF">)</font><font color="4444FF">;</font> <font color="#2040a0">WSACleanup</font><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF">;</font> <strong>return</strong> <font color="#2040a0">retval</font><font color="4444FF">;</font><font color="4444FF"><strong>}</strong></font></pre> </td> </tr></table><!-- ---- Document Footer ---- --><hr noshade size=1 color=#404040><table cellpadding=5 cellspacing=0 border=0 width=95% align=center> <tr> <td align=left> <a href="../examples/username.html"><< Get the Username</a> </td> <td align=right> <a href="../articles/index.html">Articles >></a> </td> </tr> <tr> <td align=left> <i>Last modified on 29 April 2000 at 15:52 UTC-7</i> </td> <td align=right> <font size=-1>Please send corrections to <a href="mailto:tangent@cyberport.com">tangent@cyberport.com</a>.</font> </td> </tr> </table> <table cellpadding=5 cellspacing=0 border=0 width=95% align=center> <tr> <td align=left width=33%> <font size=-1> <a href="../index.html"><b><</b> Go to the main FAQ page</a> </font> </td> <td width=33%> <font size=-1> <center> <a href="http://www.cyberport.com/~tangent/programming"><b><<</b> Go to my Programming pages</a> </center> </font> </td> <td align=right width=33%> <font size=-1> <a href="http://www.cyberport.com/~tangent/"><b><<<</b> Go to my Home Page</a> </font> </td> </tr> </table> </body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -