1 /* default port numbers */
4 #define DAYTIME_PORT 13
6 #define CHARGEN_PORT 19
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 */
20 #define LINESIZ 74 // 72 + /r and /n
22 /* data structure to pass to threads */
23 typedef struct _Services
{
25 LPTHREAD_START_ROUTINE Service
;
26 } SERVICES
, *PSERVICES
;
28 /* tcpsvcs functions */
29 //static VOID CALLBACK ServiceMain(DWORD argc, LPTSTR *argv);
31 /* skelserver functions */
32 DWORD WINAPI
StartServer(LPVOID lpParam
);
33 SOCKET
SetUpListener(const char* ServAddr
, int Port
);
34 VOID
AcceptConnections(SOCKET ListeningSocket
, LPTHREAD_START_ROUTINE Service
);
35 BOOL
EchoIncomingPackets(SOCKET sd
);
36 BOOL
ShutdownConnection(SOCKET Sock
, BOOL bRec
);
38 /* chargen functions */
39 DWORD WINAPI
ChargenHandler(VOID
* Sock_
);
40 BOOL
GenerateChars(SOCKET Sock
);
41 BOOL
SendLine(SOCKET Sock
, TCHAR
* Line
);
43 /* daytime functions */
44 DWORD WINAPI
DaytimeHandler(VOID
* Sock_
);
45 BOOL
SendTime(SOCKET Sock
, TCHAR
*time
);
48 DWORD WINAPI
EchoHandler(VOID
* Sock_
);
49 BOOL
EchoIncomingPackets(SOCKET Sock
);
51 /* discard functions */
52 DWORD WINAPI
DiscardHandler(VOID
* Sock_
);
53 BOOL
RecieveIncomingPackets(SOCKET Sock
);
56 DWORD WINAPI
QotdHandler(VOID
* Sock_
);
57 BOOL
SendQuote(SOCKET Sock
, TCHAR
* Quote
);