1 /* default port numbers */
3 #define CHARGEN_PORT 19
4 #define DAYTIME_PORT 13
12 /* RFC865 states no more than 512 chars per line */
13 #define MAX_QUOTE_BUF 512
15 /* printable ASCII's characters for chargen */
19 /* number of chars to put on a line */
22 /* data structure to pass to threads */
23 typedef struct _Services
{
25 LPTHREAD_START_ROUTINE Service
;
26 } SERVICES
, *PSERVICES
;
28 /* skelserver functions */
29 DWORD WINAPI
StartServer(LPVOID lpParam
);
30 SOCKET
SetUpListener(const char* ServAddr
, int Port
);
31 VOID
AcceptConnections(SOCKET ListeningSocket
, LPTHREAD_START_ROUTINE Service
);
32 BOOL
EchoIncomingPackets(SOCKET sd
);
33 BOOL
ShutdownConnection(SOCKET Sock
, BOOL bRec
);
35 /* chargen functions */
36 DWORD WINAPI
ChargenHandler(VOID
* Sock_
);
37 BOOL
GenerateChars(SOCKET Sock
);
38 BOOL
SendChar(SOCKET Sock
, CHAR c
);
40 /* daytime functions */
41 DWORD WINAPI
DaytimeHandler(VOID
* Sock_
);
42 BOOL
SendTime(SOCKET Sock
, TCHAR
*time
);
45 DWORD WINAPI
EchoHandler(VOID
* Sock_
);
46 BOOL
EchoIncomingPackets(SOCKET Sock
);
48 /* discard functions */
52 DWORD WINAPI
QotdHandler(VOID
* Sock_
);
53 BOOL
SendQuote(SOCKET Sock
, TCHAR
* Quote
);