Initial commit.
This commit is contained in:
95
codemp/encryption/sockets.h
Normal file
95
codemp/encryption/sockets.h
Normal file
@@ -0,0 +1,95 @@
|
||||
#ifndef __SOCKETS_H
|
||||
#define __SOCKETS_H
|
||||
|
||||
#include <windows.h>
|
||||
#include <winsock.h>
|
||||
#include "buffer.h"
|
||||
|
||||
class cSocket
|
||||
{
|
||||
private:
|
||||
SOCKET Socket;
|
||||
|
||||
public:
|
||||
cSocket(void);
|
||||
cSocket(SOCKET InitSocket);
|
||||
~cSocket(void);
|
||||
|
||||
const SOCKET GetSocket(void) { return Socket; }
|
||||
|
||||
void Free(void);
|
||||
|
||||
// straight winsock commands
|
||||
bool socket(int af = PF_INET, int type = SOCK_STREAM, int protocol = IPPROTO_TCP);
|
||||
bool bind(const struct sockaddr FAR *name, int namelen);
|
||||
bool listen(int backlog = 5);
|
||||
SOCKET accept(struct sockaddr FAR *addr = NULL, int FAR *addrlen = 0);
|
||||
bool connect(struct sockaddr FAR *addr, int FAR addrlen);
|
||||
int recv(char FAR *buf, int len, int flags = 0);
|
||||
int send(const char FAR *buf, int len, int flags = 0);
|
||||
|
||||
bool ioctlsocket(long cmd, u_long FAR *argp);
|
||||
bool setsockopt(int level, int optname, const char FAR *optval, int optlen);
|
||||
int getsockopt(int level, int optname, char FAR *optval, int FAR *optlen);
|
||||
bool getpeername(struct sockaddr FAR *name, int FAR *namelen);
|
||||
bool getpeername(struct sockaddr_in FAR *name, int FAR *namelen)
|
||||
{
|
||||
return getpeername((struct sockaddr FAR *)name, namelen);
|
||||
}
|
||||
|
||||
// convience functions
|
||||
bool Create(u_short Port);
|
||||
bool Connect(unsigned char u1, unsigned char u2, unsigned char u3, unsigned char u4, unsigned short port);
|
||||
cSocket *GetConnection(void);
|
||||
|
||||
bool SetBlocking(bool Enabled = false);
|
||||
bool SetKeepAlive(bool Enabled = false);
|
||||
bool SetLinger(bool Enabled = true, u_short TimeLimit = 0);
|
||||
bool SetSendBufferSize(int Size);
|
||||
};
|
||||
|
||||
class cConnection;
|
||||
|
||||
typedef void (*Connect_Callback)(cConnection *);
|
||||
|
||||
class cConnection
|
||||
{
|
||||
protected:
|
||||
cSocket *Socket;
|
||||
bool Reading;
|
||||
bool BufferReset;
|
||||
cBuffer Buffer;
|
||||
Connect_Callback Callback;
|
||||
|
||||
public:
|
||||
cConnection(cSocket *Init_Socket, Connect_Callback InitCallback = NULL, bool InitReading = true);
|
||||
~cConnection(void);
|
||||
|
||||
cBuffer &GetBuffer(void) { return Buffer; }
|
||||
void Print(char *Format, ...);
|
||||
bool Write(void);
|
||||
bool Read(void);
|
||||
bool Handle(void);
|
||||
|
||||
virtual bool ReadCallback(void) { return true; }
|
||||
virtual bool WriteCallback(void) { return true; }
|
||||
};
|
||||
|
||||
class cWinsock
|
||||
{
|
||||
private:
|
||||
bool WinsockStarted;
|
||||
|
||||
public:
|
||||
cWinsock(void);
|
||||
~cWinsock(void);
|
||||
|
||||
void Init(void);
|
||||
void Shutdown(void);
|
||||
|
||||
struct servent FAR *getservbyname(const char FAR *name, const char FAR *proto = "tcp");
|
||||
u_short htons(u_short hostshort);
|
||||
struct hostent FAR *gethostbyaddr(const char FAR *addr, int len, int type = PF_INET);
|
||||
};
|
||||
|
||||
#endif // __SOCKETS_H
|
||||
Reference in New Issue
Block a user