1 /* default port numbers */
4 #define DAYTIME_PORT 13
6 #define CHARGEN_PORT 19
11 #define CS_TIMEOUT 1000
13 /* RFC865 states no more than 512 chars per line */
14 #define MAX_QUOTE_BUF 512
16 /* printable ASCII's characters for chargen */
20 /* number of chars to put on a line */
21 #define LINESIZ 74 // 72 + /r and /n
23 /* data structure to pass to threads */
24 typedef struct _Services
{
27 LPTHREAD_START_ROUTINE Service
;
28 } SERVICES
, *PSERVICES
;
31 /* tcpsvcs functions * /
32 static VOID WINAPI ServiceMain(DWORD argc, LPTSTR argv[]);
33 VOID WINAPI ServerCtrlHandler(DWORD control);
34 INT CreateServers(VOID);
35 VOID LogEvent (LPCTSTR UserMessage, DWORD ExitCode, BOOL PrintErrorMsg);
36 void UpdateStatus (int NewStatus, int Check);
39 /* skelserver functions */
40 DWORD WINAPI
StartServer(LPVOID lpParam
);
41 SOCKET
SetUpListener(const char* ServAddr
, int Port
);
42 VOID
AcceptConnections(SOCKET ListeningSocket
,
43 LPTHREAD_START_ROUTINE Service
, TCHAR
*Name
);
44 BOOL
EchoIncomingPackets(SOCKET sd
);
45 BOOL
ShutdownConnection(SOCKET Sock
, BOOL bRec
);
47 /* chargen functions */
48 DWORD WINAPI
ChargenHandler(VOID
* Sock_
);
49 BOOL
GenerateChars(SOCKET Sock
);
50 BOOL
SendLine(SOCKET Sock
, TCHAR
* Line
);
52 /* daytime functions */
53 DWORD WINAPI
DaytimeHandler(VOID
* Sock_
);
54 BOOL
SendTime(SOCKET Sock
, TCHAR
*time
);
57 DWORD WINAPI
EchoHandler(VOID
* Sock_
);
58 BOOL
EchoIncomingPackets(SOCKET Sock
);
60 /* discard functions */
61 DWORD WINAPI
DiscardHandler(VOID
* Sock_
);
62 BOOL
RecieveIncomingPackets(SOCKET Sock
);
65 DWORD WINAPI
QotdHandler(VOID
* Sock_
);
66 BOOL
SendQuote(SOCKET Sock
, TCHAR
* Quote
);