<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C Plus Plus</title><link>http://blogs.vbcity.com/msg555/category/177.aspx</link><description>Like C but incremented</description><managingEditor>Mark Gordon</managingEditor><dc:language>en-US</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>Mark Gordon</dc:creator><title>zsocket</title><link>http://blogs.vbcity.com/msg555/archive/2006/03/28/5936.aspx</link><pubDate>Tue, 28 Mar 2006 20:59:00 GMT</pubDate><guid>http://blogs.vbcity.com/msg555/archive/2006/03/28/5936.aspx</guid><description>&lt;p&gt;All code highlighting was done by &lt;A href="http://www.textrush.com/"&gt;SourceFormatX&lt;/A&gt;&lt;/p&gt;
 
Class: zsocket : &lt;A href="http://blogs.vbcity.com/upload/msg555/code/cpp/zsocket.zip"&gt;Header&lt;/A&gt; | &lt;A href="http://blogs.vbcity.com/upload/msg555/code/cpp/zsocket.htm"&gt;Html&lt;/A&gt;&lt;BR&gt;Author: Mark, the Great and Powerful&lt;BR&gt;Date of Creation: 9/2/05&lt;BR&gt;Last Update: 3/11/06&lt;BR&gt;Library Dependencies: Ws2_32.lib&lt;BR&gt;&lt;BR&gt;
&lt;P&gt;zsocket is a handy class that I created that handles tcp communication similarily to the WinSock control. I implemented &amp;#8220;events&amp;#8221; (error, statechange, connectionrequest, and dataarrival) by having the client code inherit the zsocket class and override these methods. (You don't have to override any of them) All of the classes functionality is run on one seperate thread (for all instances of zsocket) so even if the thread that created the socket is busy, it can still continue to function. One thing you have to watchout for however is the fact that all the events are called by the single thread that runs all of the sockets. So if you do something in that thread that takes an excessive amount of time, no other sockets (including the current socket) can continue to function and recieve messages. Note that syncconnect and flush will allow sockets to continue to function. &lt;/P&gt;
&lt;P&gt;Below are the avaliable functions that a deriving class can override&lt;BR&gt;&lt;/P&gt;&lt;PRE&gt;&lt;FONT size=2&gt;&lt;FONT color=#0000ff&gt;virtual void &lt;/FONT&gt;error&lt;FONT color=#000080&gt;(&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;num&lt;FONT color=#000080&gt;, &lt;/FONT&gt;std&lt;FONT color=#000080&gt;::&lt;/FONT&gt;string description&lt;FONT color=#000080&gt;) {}
&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;virtual void &lt;/FONT&gt;statechange&lt;FONT color=#000080&gt;(&lt;/FONT&gt;SocketState oldstate&lt;FONT color=#000080&gt;) {}
&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;virtual void &lt;/FONT&gt;connectionrequest&lt;FONT color=#000080&gt;(&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;requestid&lt;FONT color=#000080&gt;) {}
&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;virtual void &lt;/FONT&gt;dataarrival&lt;FONT color=#000080&gt;(&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;bytessent&lt;FONT color=#000080&gt;) {}
&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/PRE&gt;
&lt;P&gt;Here is a sample cleint program using zsocket. It just simply connects to google and requests its homepage. &lt;/P&gt;&lt;PRE&gt;&lt;FONT size=2&gt;&lt;FONT color=#0000ff&gt;#include &lt;/FONT&gt;&lt;FONT color=#000080&gt;&amp;lt;&lt;/FONT&gt;iostream&lt;FONT color=#000080&gt;&amp;gt;
&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;#include &lt;/FONT&gt;&lt;FONT color=#800000&gt;"zsocket.hpp"
&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;using namespace &lt;/FONT&gt;std&lt;FONT color=#000080&gt;;
&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;class &lt;/FONT&gt;mysck&lt;FONT color=#000080&gt;: &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;public &lt;/FONT&gt;zsocket
&lt;FONT color=#000080&gt;{
&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;public&lt;/FONT&gt;&lt;FONT color=#000080&gt;:
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;virtual void &lt;/FONT&gt;error&lt;FONT color=#000080&gt;(&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;num&lt;FONT color=#000080&gt;, &lt;/FONT&gt;std&lt;FONT color=#000080&gt;::&lt;/FONT&gt;string description&lt;FONT color=#000080&gt;)
    {
        &lt;/FONT&gt;cout &lt;FONT color=#000080&gt;&amp;lt;&amp;lt; &lt;/FONT&gt;&lt;FONT color=#800000&gt;"Error #" &lt;/FONT&gt;&lt;FONT color=#000080&gt;&amp;lt;&amp;lt; &lt;/FONT&gt;num &lt;FONT color=#000080&gt;&amp;lt;&amp;lt; &lt;/FONT&gt;&lt;FONT color=#800000&gt;"\t" &lt;/FONT&gt;&lt;FONT color=#000080&gt;&amp;lt;&amp;lt; &lt;/FONT&gt;description &lt;FONT color=#000080&gt;&amp;lt;&amp;lt; &lt;/FONT&gt;endl&lt;FONT color=#000080&gt;;
    }
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;virtual void &lt;/FONT&gt;statechange&lt;FONT color=#000080&gt;(&lt;/FONT&gt;SocketState oldstate&lt;FONT color=#000080&gt;)
    {
        &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;if &lt;/FONT&gt;&lt;FONT color=#000080&gt;(&lt;/FONT&gt;oldstate &lt;FONT color=#000080&gt;!= &lt;/FONT&gt;sckConnected &lt;FONT color=#000080&gt;&amp;amp;&amp;amp; &lt;/FONT&gt;state&lt;FONT color=#000080&gt;() == &lt;/FONT&gt;sckConnected&lt;FONT color=#000080&gt;)
        {
            &lt;/FONT&gt;cout &lt;FONT color=#000080&gt;&amp;lt;&amp;lt; &lt;/FONT&gt;&lt;FONT color=#800000&gt;"CONNECTED :D" &lt;/FONT&gt;&lt;FONT color=#000080&gt;&amp;lt;&amp;lt; &lt;/FONT&gt;endl&lt;FONT color=#000080&gt;;
            &lt;/FONT&gt;&lt;FONT color=#008000&gt;//issue request
            &lt;/FONT&gt;sendstring&lt;FONT color=#000080&gt;(&lt;/FONT&gt;&lt;FONT color=#800000&gt;"GET / HTTP/1.1\r\n\r\n"&lt;/FONT&gt;&lt;FONT color=#000080&gt;);
        }
    }
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;virtual void &lt;/FONT&gt;connectionrequest&lt;FONT color=#000080&gt;(&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;requestid&lt;FONT color=#000080&gt;)
    {
        &lt;/FONT&gt;&lt;FONT color=#008000&gt;//This is a client program so it should not be recieving any requests
    &lt;/FONT&gt;&lt;FONT color=#000080&gt;}
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;virtual void &lt;/FONT&gt;dataarrival&lt;FONT color=#000080&gt;(&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;bytessent&lt;FONT color=#000080&gt;)
    {
        &lt;/FONT&gt;&lt;FONT color=#008000&gt;//To get a string containing the data sent, call getdata()
        &lt;/FONT&gt;cout &lt;FONT color=#000080&gt;&amp;lt;&amp;lt; &lt;/FONT&gt;getdata&lt;FONT color=#000080&gt;() &amp;lt;&amp;lt; &lt;/FONT&gt;endl&lt;FONT color=#000080&gt;;
    }
};
&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;main&lt;FONT color=#000080&gt;()
{
    &lt;/FONT&gt;&lt;FONT color=#008000&gt;//Let's try it out
    &lt;/FONT&gt;zsocket &lt;FONT color=#000080&gt;* &lt;/FONT&gt;sck &lt;FONT color=#000080&gt;= &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;new &lt;/FONT&gt;mysck&lt;FONT color=#000080&gt;();
    &lt;/FONT&gt;sck&lt;FONT color=#000080&gt;-&amp;gt;&lt;/FONT&gt;sckconnect&lt;FONT color=#000080&gt;(&lt;/FONT&gt;&lt;FONT color=#800000&gt;"www.google.com"&lt;/FONT&gt;&lt;FONT color=#000080&gt;, &lt;/FONT&gt;&lt;FONT color=#800080&gt;80&lt;/FONT&gt;&lt;FONT color=#000080&gt;);
    &lt;/FONT&gt;system&lt;FONT color=#000080&gt;(&lt;/FONT&gt;&lt;FONT color=#800000&gt;"pause"&lt;/FONT&gt;&lt;FONT color=#000080&gt;);
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;delete &lt;/FONT&gt;sck&lt;FONT color=#000080&gt;;
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;return &lt;/FONT&gt;&lt;FONT color=#800080&gt;0&lt;/FONT&gt;&lt;FONT color=#000080&gt;;
}&lt;/FONT&gt;&lt;/FONT&gt;&lt;/PRE&gt;
&lt;P&gt;Here is an example server program using zsocket. This is just a basic http server. For purposes of keeping this code segment short, it has a memory leak due to mysck instances not being deleted. After running this, try going to http://127.0.0.1 &lt;/P&gt;&lt;PRE&gt;&lt;FONT size=2&gt;&lt;FONT color=#0000ff&gt;#include &lt;/FONT&gt;&lt;FONT color=#000080&gt;&amp;lt;&lt;/FONT&gt;iostream&lt;FONT color=#000080&gt;&amp;gt;
&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;#include &lt;/FONT&gt;&lt;FONT color=#800000&gt;"zsocket.hpp"
&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;using namespace &lt;/FONT&gt;std&lt;FONT color=#000080&gt;;
&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;class &lt;/FONT&gt;mysck&lt;FONT color=#000080&gt;: &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;public &lt;/FONT&gt;zsocket
&lt;FONT color=#000080&gt;{
&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;public&lt;/FONT&gt;&lt;FONT color=#000080&gt;:
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;virtual void &lt;/FONT&gt;error&lt;FONT color=#000080&gt;(&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;num&lt;FONT color=#000080&gt;, &lt;/FONT&gt;std&lt;FONT color=#000080&gt;::&lt;/FONT&gt;string description&lt;FONT color=#000080&gt;)
    {
        &lt;/FONT&gt;cout &lt;FONT color=#000080&gt;&amp;lt;&amp;lt; &lt;/FONT&gt;&lt;FONT color=#800000&gt;"Error #" &lt;/FONT&gt;&lt;FONT color=#000080&gt;&amp;lt;&amp;lt; &lt;/FONT&gt;num &lt;FONT color=#000080&gt;&amp;lt;&amp;lt; &lt;/FONT&gt;&lt;FONT color=#800000&gt;"\t" &lt;/FONT&gt;&lt;FONT color=#000080&gt;&amp;lt;&amp;lt; &lt;/FONT&gt;description &lt;FONT color=#000080&gt;&amp;lt;&amp;lt; &lt;/FONT&gt;endl&lt;FONT color=#000080&gt;;
    }
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;virtual void &lt;/FONT&gt;dataarrival&lt;FONT color=#000080&gt;(&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;bytessent&lt;FONT color=#000080&gt;)
    {
        &lt;/FONT&gt;&lt;FONT color=#008000&gt;//Being a simple server, we'll just send back a hello world
        &lt;/FONT&gt;sendstring&lt;FONT color=#000080&gt;(&lt;/FONT&gt;&lt;FONT color=#800000&gt;"HTTP/1.1 200 OK\r\nContent-Length: 11\r\n\r\nHello World"&lt;/FONT&gt;&lt;FONT color=#000080&gt;);
    }
};
&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;class &lt;/FONT&gt;myserver&lt;FONT color=#000080&gt;: &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;public &lt;/FONT&gt;zsocket
&lt;FONT color=#000080&gt;{
&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;public&lt;/FONT&gt;&lt;FONT color=#000080&gt;:
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;virtual void &lt;/FONT&gt;error&lt;FONT color=#000080&gt;(&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;num&lt;FONT color=#000080&gt;, &lt;/FONT&gt;std&lt;FONT color=#000080&gt;::&lt;/FONT&gt;string description&lt;FONT color=#000080&gt;)
    {
        &lt;/FONT&gt;cout &lt;FONT color=#000080&gt;&amp;lt;&amp;lt; &lt;/FONT&gt;&lt;FONT color=#800000&gt;"Error #" &lt;/FONT&gt;&lt;FONT color=#000080&gt;&amp;lt;&amp;lt; &lt;/FONT&gt;num &lt;FONT color=#000080&gt;&amp;lt;&amp;lt; &lt;/FONT&gt;&lt;FONT color=#800000&gt;"\t" &lt;/FONT&gt;&lt;FONT color=#000080&gt;&amp;lt;&amp;lt; &lt;/FONT&gt;description &lt;FONT color=#000080&gt;&amp;lt;&amp;lt; &lt;/FONT&gt;endl&lt;FONT color=#000080&gt;;
    }
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;virtual void &lt;/FONT&gt;statechange&lt;FONT color=#000080&gt;(&lt;/FONT&gt;SocketState oldstate&lt;FONT color=#000080&gt;)
    {
        &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;if &lt;/FONT&gt;&lt;FONT color=#000080&gt;(&lt;/FONT&gt;oldstate &lt;FONT color=#000080&gt;!= &lt;/FONT&gt;sckListening &lt;FONT color=#000080&gt;&amp;amp;&amp;amp; &lt;/FONT&gt;state&lt;FONT color=#000080&gt;() == &lt;/FONT&gt;sckListening&lt;FONT color=#000080&gt;)
        {
            &lt;/FONT&gt;cout &lt;FONT color=#000080&gt;&amp;lt;&amp;lt; &lt;/FONT&gt;&lt;FONT color=#800000&gt;"LISTENING :D" &lt;/FONT&gt;&lt;FONT color=#000080&gt;&amp;lt;&amp;lt; &lt;/FONT&gt;endl&lt;FONT color=#000080&gt;;
        }
    }
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;virtual void &lt;/FONT&gt;connectionrequest&lt;FONT color=#000080&gt;(&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;requestid&lt;FONT color=#000080&gt;)
    {
        &lt;/FONT&gt;&lt;FONT color=#008000&gt;//spawn a socket to take the connection
        &lt;/FONT&gt;zsocket &lt;FONT color=#000080&gt;* &lt;/FONT&gt;sck &lt;FONT color=#000080&gt;= &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;new &lt;/FONT&gt;mysck&lt;FONT color=#000080&gt;();
        &lt;/FONT&gt;sck&lt;FONT color=#000080&gt;-&amp;gt;&lt;/FONT&gt;sckaccept&lt;FONT color=#000080&gt;(&lt;/FONT&gt;requestid&lt;FONT color=#000080&gt;);
    }
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;virtual void &lt;/FONT&gt;dataarrival&lt;FONT color=#000080&gt;(&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;bytessent&lt;FONT color=#000080&gt;)
    {
        &lt;/FONT&gt;&lt;FONT color=#008000&gt;//This is a server socket so it shouldn't recieve data
        //but it could if it later connected or accepted a connection request
    &lt;/FONT&gt;&lt;FONT color=#000080&gt;}
};
&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;main&lt;FONT color=#000080&gt;()
{
    &lt;/FONT&gt;&lt;FONT color=#008000&gt;//Let's try it out
    &lt;/FONT&gt;zsocket &lt;FONT color=#000080&gt;* &lt;/FONT&gt;svr &lt;FONT color=#000080&gt;= &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;new &lt;/FONT&gt;myserver&lt;FONT color=#000080&gt;();
    &lt;/FONT&gt;svr&lt;FONT color=#000080&gt;-&amp;gt;&lt;/FONT&gt;scklisten&lt;FONT color=#000080&gt;(&lt;/FONT&gt;&lt;FONT color=#800080&gt;80&lt;/FONT&gt;&lt;FONT color=#000080&gt;);
    &lt;/FONT&gt;system&lt;FONT color=#000080&gt;(&lt;/FONT&gt;&lt;FONT color=#800000&gt;"pause"&lt;/FONT&gt;&lt;FONT color=#000080&gt;);
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;delete &lt;/FONT&gt;svr&lt;FONT color=#000080&gt;;
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;return &lt;/FONT&gt;&lt;FONT color=#800080&gt;0&lt;/FONT&gt;&lt;FONT color=#000080&gt;;
}&lt;/FONT&gt;&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT size=2&gt;Constructor
    zsocket&lt;FONT color=#000080&gt;();  &lt;/FONT&gt;&lt;FONT color=#008000&gt;//Creates a basic socket object and initializes the zsocket thread if needed
&lt;/FONT&gt;Methods
    &lt;FONT color=#008000&gt;//Syncronous connect methods
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;bool &lt;/FONT&gt;syncconnect&lt;FONT color=#000080&gt;(&lt;/FONT&gt;std&lt;FONT color=#000080&gt;::&lt;/FONT&gt;string zhost&lt;FONT color=#000080&gt;, &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;zport&lt;FONT color=#000080&gt;,&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;timeout&lt;FONT color=#000080&gt;);
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;bool &lt;/FONT&gt;syncconnect&lt;FONT color=#000080&gt;(&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;timeout&lt;FONT color=#000080&gt;);
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;bool &lt;/FONT&gt;syncconnect&lt;FONT color=#000080&gt;(&lt;/FONT&gt;std&lt;FONT color=#000080&gt;::&lt;/FONT&gt;string zhost&lt;FONT color=#000080&gt;, &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;zport&lt;FONT color=#000080&gt;);
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;bool &lt;/FONT&gt;syncconnect&lt;FONT color=#000080&gt;();
    &lt;/FONT&gt;&lt;FONT color=#008000&gt;//Asyncronous connect methods
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;void &lt;/FONT&gt;sckconnect&lt;FONT color=#000080&gt;(&lt;/FONT&gt;std&lt;FONT color=#000080&gt;::&lt;/FONT&gt;string zhost&lt;FONT color=#000080&gt;, &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;zport&lt;FONT color=#000080&gt;, &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;timeout&lt;FONT color=#000080&gt;);
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;void &lt;/FONT&gt;sckconnect&lt;FONT color=#000080&gt;(&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;timeout&lt;FONT color=#000080&gt;);
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;void &lt;/FONT&gt;sckconnect&lt;FONT color=#000080&gt;(&lt;/FONT&gt;std&lt;FONT color=#000080&gt;::&lt;/FONT&gt;string zhost&lt;FONT color=#000080&gt;, &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;zport&lt;FONT color=#000080&gt;);
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;void &lt;/FONT&gt;sckconnect&lt;FONT color=#000080&gt;();
    &lt;/FONT&gt;&lt;FONT color=#008000&gt;//Send methods
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;void &lt;/FONT&gt;senddata&lt;FONT color=#000080&gt;(&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;void &lt;/FONT&gt;&lt;FONT color=#000080&gt;* &lt;/FONT&gt;buf&lt;FONT color=#000080&gt;, &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;length&lt;FONT color=#000080&gt;);
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;void &lt;/FONT&gt;sendstring&lt;FONT color=#000080&gt;(&lt;/FONT&gt;std&lt;FONT color=#000080&gt;::&lt;/FONT&gt;string str&lt;FONT color=#000080&gt;);
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;void &lt;/FONT&gt;sendfile&lt;FONT color=#000080&gt;(&lt;/FONT&gt;std&lt;FONT color=#000080&gt;::&lt;/FONT&gt;string file&lt;FONT color=#000080&gt;);
    &lt;/FONT&gt;&lt;FONT color=#008000&gt;//Finishes sending all data for this socket
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;void &lt;/FONT&gt;flush&lt;FONT color=#000080&gt;();
    &lt;/FONT&gt;&lt;FONT color=#008000&gt;//Recieve methods
    &lt;/FONT&gt;std&lt;FONT color=#000080&gt;::&lt;/FONT&gt;string getdata&lt;FONT color=#000080&gt;();  &lt;/FONT&gt;&lt;FONT color=#008000&gt;//Gets data and removes it from the buffer
    &lt;/FONT&gt;std&lt;FONT color=#000080&gt;::&lt;/FONT&gt;string peekdata&lt;FONT color=#000080&gt;();  &lt;/FONT&gt;&lt;FONT color=#008000&gt;//Gets data but does no remove it from the buffer
    //Listen functions
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;bool &lt;/FONT&gt;scklisten&lt;FONT color=#000080&gt;(&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;zport&lt;FONT color=#000080&gt;);
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;bool &lt;/FONT&gt;scklisten&lt;FONT color=#000080&gt;();
    &lt;/FONT&gt;&lt;FONT color=#008000&gt;//Other functions
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;void &lt;/FONT&gt;close&lt;FONT color=#000080&gt;();  &lt;/FONT&gt;&lt;FONT color=#008000&gt;//Destroys the underlying socket object and creates a new one
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;void &lt;/FONT&gt;sckaccept&lt;FONT color=#000080&gt;(&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;requestid&lt;FONT color=#000080&gt;);  &lt;/FONT&gt;&lt;FONT color=#008000&gt;//Accepts a connection request
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;bool &lt;/FONT&gt;waitforconnection&lt;FONT color=#000080&gt;(&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;timeout&lt;FONT color=#000080&gt;);  &lt;/FONT&gt;&lt;FONT color=#008000&gt;//Attempts to wait for a connection request and connects to it
&lt;/FONT&gt;Properties
    &lt;FONT color=#008000&gt;//Local properties
    &lt;/FONT&gt;std&lt;FONT color=#000080&gt;::&lt;/FONT&gt;string localip&lt;FONT color=#000080&gt;();
    &lt;/FONT&gt;std&lt;FONT color=#000080&gt;::&lt;/FONT&gt;string localhost&lt;FONT color=#000080&gt;();
    &lt;/FONT&gt;&lt;FONT color=#008000&gt;//Remote properties
    &lt;/FONT&gt;std&lt;FONT color=#000080&gt;::&lt;/FONT&gt;string remoteip&lt;FONT color=#000080&gt;();
    &lt;/FONT&gt;std&lt;FONT color=#000080&gt;::&lt;/FONT&gt;string remotehost&lt;FONT color=#000080&gt;();
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;port&lt;FONT color=#000080&gt;(); &lt;/FONT&gt;&lt;FONT color=#008000&gt;//Port to listen on or connect to
    &lt;/FONT&gt;SocketState state&lt;FONT color=#000080&gt;(); &lt;/FONT&gt;&lt;FONT color=#008000&gt;//Current state of the socket
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;getlasttime&lt;FONT color=#000080&gt;(); &lt;/FONT&gt;&lt;FONT color=#008000&gt;//The last time (as returned by GetTickCount()) that the socket was sending or recieving data
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;timeout&lt;FONT color=#000080&gt;(); &lt;/FONT&gt;&lt;FONT color=#008000&gt;//Max timeout while attempting to connect
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;maxsendbuffersize&lt;FONT color=#000080&gt;(); &lt;/FONT&gt;&lt;FONT color=#008000&gt;//the maximum amount of data in bytes that can be sent in one packet.
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;void &lt;/FONT&gt;sethost&lt;FONT color=#000080&gt;(&lt;/FONT&gt;std&lt;FONT color=#000080&gt;::&lt;/FONT&gt;string zhost&lt;FONT color=#000080&gt;); &lt;/FONT&gt;&lt;FONT color=#008000&gt;//Set the remote host
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;void &lt;/FONT&gt;setport&lt;FONT color=#000080&gt;(&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;zport&lt;FONT color=#000080&gt;); &lt;/FONT&gt;&lt;FONT color=#008000&gt;//Set the port to listen on or connect to
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;void &lt;/FONT&gt;settimeout&lt;FONT color=#000080&gt;(&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;ztimeout&lt;FONT color=#000080&gt;); &lt;/FONT&gt;&lt;FONT color=#008000&gt;//Set the time in milliseconds to attempt to connect
&lt;/FONT&gt;&lt;/FONT&gt;&lt;/PRE&gt;&lt;/FONT&gt;&lt;img src ="http://blogs.vbcity.com/msg555/aggbug/5936.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>