Advanced FormatDate Function
The purpose of this code is to provide any user with the ability to 'Format' various date & time related information as the user desires. This includes the usage of normal strings amongst the code.
AI
AI Summary: This codebase represents a historical implementation of the logic described in the metadata. Our preservation engine analyzes the structure to provide context for modern developers.
Source Code
Upload
<table border="0" cellpadding="5" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="600" id="AutoNumber1">
<tr>
<td width="100%"><b><font face="Verdana" size="4" color="#000080">Rudimentary UDP with
Winsocks</font></b><p><font face="Verdana" size="2">Two simple console based
programs demonstrate UDP with Winsocks. The client simply sends packets of
data typed in by the user and the server displays it. The code is more of a
reference for starting applications that require Winsocks. </font></p>
<table border="1" cellpadding="5" cellspacing="0" style="border-collapse: collapse" bordercolor="#CCCCCC" width="100%" id="AutoNumber2" bgcolor="#CCCCCC">
<tr>
<td width="100%" bgcolor="#999999" bordercolor="#999999"><b>
<font face="Verdana" color="#FFFFFF">Server Code</font></b><ul>
<li><font face="Verdana" size="2" color="#FFFFFF">Create a new Win32
Console application in VC++ 6.0.</font></li>
<li><font face="Verdana" size="2" color="#FFFFFF">Add a new CPP file
to this project.</font></li>
<li><font face="Verdana" size="2" color="#FFFFFF">Copy and paste the
Server code in this new file and compile the project.</font></li>
</ul>
</td>
</tr>
<tr>
<td width="100%"><font size="2" face="Courier New">
<font color="#0000FF">#include</font> <iostream.h><br>
<font color="#0000FF">#include</font> <Winsock2.h><br>
<br>
<font color="#0000FF">void</font> ReportError (<font color="#0000FF">const
char* const</font> szErr)<br>
{<br>
cout << szErr << endl;<br>
}<br>
<br>
<font color="#0000FF">int</font> main (<font color="#0000FF">void</font>)<br>
{<br>
<font color="#008080">// Initialize Windows Sockets</font><br>
WORD wVersionRequired = MAKEWORD (2, 2);<br>
WSADATA wd;<br>
<font color="#0000FF">int</font> iReturn = ::WSAStartup (wVersionRequired,
&wd);<br>
<font color="#0000FF">if</font> (iReturn != 0)<br>
<font color="#0000FF">return</font> ReportError ("WSAStartup
failed."), 0;<br>
<br>
<font color="#008080">// Create the socket</font><br>
SOCKET sock = ::WSASocket (AF_INET, SOCK_DGRAM, 0, 0, 0, 0);<br>
<font color="#0000FF">if</font> (sock == INVALID_SOCKET)<br>
<font color="#0000FF">return</font> ReportError ("WSASocket
failed."), ::WSACleanup (), 0;<br>
<br>
<font color="#008080">// Get the name of the local computer</font><br>
<font color="#0000FF">char</font> szHostName [MAX_PATH];<br>
::gethostname (szHostName, <font color="#0000FF">sizeof</font> szHostName);<br>
<br>
<font color="#008080">// Fill in the sockaddr_in structure for binding<br>
</font> sockaddr_in sa;<br>
sa.sin_family = AF_INET;<br>
::WSAHtons (sock, 8080, &sa.sin_port);<br>
<br>
<font color="#008080">// Get the IP address of the local computer name<br>
</font> HOSTENT* phe = ::gethostbyname (szHostName);<br>
memcpy (&sa.sin_addr, phe->h_addr_list [0], phe->h_length);<br>
<br>
<font color="#008080">// Pad with zeros</font><br>
ZeroMemory (sa.sin_zero, <font color="#0000FF">sizeof</font> sa.sin_zero);<br>
<br>
<font color="#008080">// Bind to a port</font><br>
iReturn = ::bind (sock, <font color="#0000FF">reinterpret_cast</font> <sockaddr*>
(&sa), <br>
<font color="#0000FF">sizeof</font> sockaddr_in);<br>
<font color="#0000FF">if</font> (iReturn == SOCKET_ERROR)<br>
<font color="#0000FF">return</font> ReportError ("bind
failed."), ::closesocket (sock), <br>
::WSACleanup (), 0;<br>
<br>
<font color="#008080">// Prepare receive buffer(s)</font><br>
WSABUF wbRecv [1];<br>
<font color="#0000FF">char</font> szRecvBuf [1][256];<br>
wbRecv [0].len = 256;<br>
wbRecv [0].buf = szRecvBuf [0];<br>
<br>
<font color="#008080">// Receive the first line of data</font><br>
DWORD dwBytesReceived = 0, dwFlags = 0;<br>
INT nFromLen = <font color="#0000FF">sizeof</font> sockaddr_in;<br>
if ((iReturn = ::WSARecvFrom (sock, wbRecv, 1, <br>
&dwBytesReceived, &dwFlags, <br>
<font color="#0000FF">reinterpret_cast</font> <sockaddr*> (&sa),
&nFromLen, <br>
NULL, NULL)) == 0)<br>
{<br>
<font color="#008080">// Output Received data till a 'Close'
is received.</font><br>
<font color="#0000FF">do</font><br>
{<br>
cout << "Data: " << wbRecv [0].buf << ", Read: "
<br>
<< dwBytesReceived << " bytes" <<<br>
", From IP: " << ::inet_ntoa (sa.sin_addr)
<< endl;<br>
<br>
<font color="#008080">// Reset in - out
parameters</font><br>
nFromLen = <font color="#0000FF">sizeof</font>
sockaddr_in;<br>
dwFlags = 0;<br>
}<br>
<font color="#0000FF">while</font> (lstrcmpi (wbRecv [0].buf,
"Close") != 0<br>
&& ::WSARecvFrom (sock, wbRecv, 1, <br>
&dwBytesReceived, &dwFlags, <br>
<font color="#0000FF">reinterpret_cast</font> <sockaddr*>
(&sa), &nFromLen, <br>
NULL, NULL) == 0);<br>
}<br>
<font color="#0000FF">else</font><br>
{<br>
<font color="#008080">// Report Recv errors</font><br>
<font color="#0000FF">char</font> szError [256];<br>
wsprintf (szError, <br>
"WSARecvFrom failed and returned: %d. "<br>
"WSAGetLastError: %d", iReturn, <br>
WSAGetLastError ());<br>
ReportError (szError);<br>
}<br>
<br>
<font color="#008080">// Close the socket</font><br>
::closesocket (sock);<br>
<br>
<font color="#008080">// Uninitialize Windows Sockets</font><br>
::WSACleanup ();<br>
<br>
<font color="#0000FF">return</font> 0;<br>
}</font></td>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber4">
<tr>
<td width="100%"> </td>
</tr>
</table>
<table border="1" cellpadding="5" cellspacing="0" style="border-collapse: collapse" bordercolor="#CCCCCC" width="100%" id="AutoNumber3" bgcolor="#CCCCCC">
<tr>
<td width="100%" bgcolor="#999999" bordercolor="#999999"><b>
<font face="Verdana" color="#FFFFFF">Client Code</font></b><ul>
<li><font face="Verdana" size="2" color="#FFFFFF">Create another new
Win32 Console application in VC++ 6.0.</font></li>
<li><font face="Verdana" size="2" color="#FFFFFF">Add a new CPP file
to this project.</font></li>
<li><font face="Verdana" size="2" color="#FFFFFF">Copy and paste the
Client code in this new file and compile the project.</font></li>
</ul>
</td>
</tr>
<tr>
<td width="100%"><font face="Courier New" size="2">
<font color="#0000FF">#include</font> <iostream.h><br>
<font color="#0000FF">#include</font> <Winsock2.h><br>
<font color="#0000FF">#include</font> <stdio.h><br>
<br>
<font color="#0000FF">void</font> ReportError (<font color="#0000FF">const</font>
<font color="#0000FF">char*</font> <font color="#0000FF">const</font>
szErr)<br>
{<br>
cout << szErr << endl;<br>
}<br>
<br>
<font color="#0000FF">int</font> main (<font color="#0000FF">void</font>)<br>
{<br>
<font color="#008080">// Initialize Windows Sockets</font><br>
WORD wVersionRequired = MAKEWORD (2, 2);<br>
WSADATA wd;<br>
<font color="#0000FF">int</font> iReturn = ::WSAStartup (wVersionRequired,
&wd);<br>
<font color="#0000FF">if</font> (iReturn != 0)<br>
<font color="#0000FF">return</font> ReportError ("WSAStartup
failed."), 0;<br>
<br>
<font color="#008080">// Create the socket</font><br>
SOCKET sock = ::WSASocket (AF_INET, SOCK_DGRAM, 0, 0, 0, 0);<br>
<font color="#0000FF">if</font> (sock == INVALID_SOCKET)<br>
<font color="#0000FF">return</font> ReportError ("WSASocket
failed."), ::WSACleanup (), 0;<br>
<br>
<font color="#008080">// Fill in the sockaddr_in structure for sending</font><br>
sockaddr_in sa;<br>
sa.sin_family = AF_INET;<br>
::WSAHtons (sock, 8080, &sa.sin_port);<br>
<br>
<font color="#008080">// Fill in the IP address of the machine where the
<br>
// server resides</font><br>
sa.sin_addr.S_un.S_addr = ::inet_addr ("xxx.xxx.xxx.xxx");<br>
<font color="#008080"> // Substitute "xxx.xxx.xxx.xxx" with a
valid IP</font><br>
<br>
<font color="#008080">// Pad with zeros</font><br>
ZeroMemory (sa.sin_zero, <font color="#0000FF">sizeof</font> sa.sin_zero);<br>
<br>
<font color="#008080">// Prepare receive buffer(s)</font><br>
WSABUF wbSend [1];<br>
<font color="#0000FF">char</font> szSendBuf [1][512];<br>
wbSend [0].len = 512;<br>
wbSend [0].buf = szSendBuf [0];<br>
<br>
<font color="#008080">// Receive the first line of data</font><br>
DWORD dwBytesSent = 0;<br>
INT nToLen = <font color="#0000FF">sizeof</font> sockaddr_in;<br>
<br>
cout << ">" << flush;<br>
<font color="#0000FF">char</font> szGet [402];<br>
gets (szGet);<br>
<br>
DWORD dwTickCount = GetTickCount ();<br>
wsprintf (wbSend [0].buf, "%lu %s", dwTickCount, szGet);<br>
<br>
<font color="#0000FF">if</font> ((iReturn = ::WSASendTo (sock, wbSend, 1,
<br>
&dwBytesSent, NULL, <br>
<font color="#0000FF">reinterpret_cast</font> <sockaddr*> (&sa),
<br>
nToLen, NULL, NULL)) == 0)<br>
{<br>
<font color="#008080">// Output Sent data till an 'Exit' is
typed</font><br>
<font color="#0000FF">do</font><br>
{<br>
cout << "Data: " << wbSend [0].buf << ", Sent: "
<br>
<< dwBytesSent << endl;<br>
<br>
cout << ">" << flush;<br>
gets (szGet);<br>
<br>
dwTickCount = GetTickCount ();<br>
wsprintf (wbSend [0].buf, "%lu %s", dwTickCount,
szGet);<br>
<br>
<font color="#008080">// Reset in - out
parameters</font><br>
nToLen = sizeof sockaddr_in;<br>
dwBytesSent = 0;<br>
}<br>
<font color="#0000FF">while</font> (lstrcmpi (szGet, "Exit")
!= 0<br>
&& ::WSASendTo (sock, wbSend, 1, <br>
&dwBytesSent, NULL, <br>
<font color="#0000FF">reinterpret_cast</font> <sockaddr*>
(&sa), <br>
nToLen, NULL, NULL) == 0);<br>
}<br>
<font color="#0000FF">else</font><br>
{<br>
<font color="#008080">// Report Recv errors</font><br>
<font color="#0000FF">char</font> szError [256];<br>
wsprintf (szError, <br>
"WSASendTo failed and returned: %d. "<br>
"WSAGetLastError: %d", iReturn, <br>
WSAGetLastError ());<br>
ReportError (szError);<br>
}<br>
<br>
<font color="#008080">// Close the socket</font><br>
::closesocket (sock);<br>
<br>
<font color="#008080">// Uninitialize Windows Sockets</font><br>
::WSACleanup ();<br>
<br>
<font color="#0000FF">return</font> 0;<br>
}</font></td>
</tr>
</table>
<p><font face="Verdana" size="2">Once the client and the server program is
compiled then run both at the same time. Make sure that the IP used in the
client is correct. Also make sure that the port number used in the server as
well as the client is the same.</font></p>
</td>
</tr>
</table>
Original Comments (3)
Recovered from Wayback Machine