📄 mysocket.h
字号:
//#include <unistd.h>
//#include <sys/types.h>
//#include <arpa/inet.h>
//#include <netinet/in.h>
//#include <netdb.h>
//#include <sys/socket.h>
//#include <sys/time.h>
#include <winsock2.h>
#include <stdlib.h>
#include <urlmon.h>
#include <time.h>
#include <typeinfo.h>
#ifndef _UNISTD_H
#define _UNISTD_H
#pragma comment(lib, "ws2_32.lib");
//#pragma comment(lib, "advapi32.lib");
//#pragma comment(lib, "user32.lib");
//#pragma comment(lib, "urlmon.lib");
int WSAStartup(WORD wVersionRequested, LPWSADATA lpWSAData );
int WSACleanup(void);
const unsigned MYSBUF_SIZE = 1024;
const unsigned MYSMAX_NAME_LEN = 256;
const unsigned MYSRX_BUF_SIZE = 4096;
const unsigned MYSTX_BUF_SIZE = 4096;
const unsigned MAXCONN = 5;
const unsigned MYSOCKET_DEFAULT_PORT = 1234;
enum MySocketError
{
MYSOCKET_NO_ERROR = 0,
MYSOCKET_INVALID_ERROR,
MYSOCKET_ACCEPT_ERROR,
MYSOCKET_BIND_ERROR,
MYSOCKET_BUFOVER_ERROR,
MYSOCKET_CONNECT_ERROR,
MYSOCKET_FILESYSTEM_ERROR,
MYSOCKET_GETOPTION_ERROR,
MYSOCKET_HOSTNAME_ERROR,
MYSOCKET_INIT_ERROR,
MYSOCKET_LISTEN_ERROR,
MYSOCKET_PEERNAME_ERROR,
MYSOCKET_PROTOCOL_ERROR,
MYSOCKET_RECEIVE_ERROR,
MYSOCKET_REQUEST_TIMEOUT,
MYSOCKET_SERVICE_ERROR,
MYSOCKET_SETOPTION_ERROR,
MYSOCKET_SOCKNAME_ERROR,
MYSOCKET_SOCKETTYPE_ERROR,
MYSOCKET_TRANSMIT_ERROR,
};
class MySocket
{
protected:
sa_family_t address_family;
int protocol_family;
int socket_type;
int port_number;
int Mysocket;
int conn_socket;
MySocketError socket_error;
protected:
int bytes_read;
int bytes_moved;
int is_connected;
int is_bound;
public:
sockaddr_in sin;
sockaddr_in remote_sin;
public:
MySocket();
MySocket(int st, int port, char *hostname=0);
MySocket(sa_family_t af, int st, int pf, int port, char *hostname=0);
virtual ~MySocket();
public:
void SetAddressFamily(sa_family_t af) { address_family = af; }
void SetProtocolFamily(int pf) { protocol_family = pf; }
int GetProtocolFamily() { return protocol_family; }
void SetPortNumber(int p) { port_number = p; }
int GetBoundSocket() { return Mysocket; }
int GetSocket() { return Mysocket; }
int GetRemoteSocket() { return conn_socket; }
public:
//socket function
int Socket();
int InitSocket(int st, int port, char *hostname = 0);
int InitSocket(sa_family_t af, int st, int pf, int port, char *hostname = 0);
void Close();
void Close(int &s);
void CloseSocket();
void CloseRemoteSocket();
int Bind();
int Connect();
int Accept();
int Listen(int max_connections = MAXCONN);
void ShutDown(int how = 0);
void ShutDown(int &s, int how = 0);
void ShutDownSocket(int how = 0);
void ShutDownRemoteSocket(int how = 0);
int GetSockOpt(int s, int level, int optName, void *optVal, unsigned *optLen);
int GetSockOpt(int level, int optName, void *optVal, unsigned *optLen);
int SetSockOpt(int s, int level, int optName, const void *optVal, unsigned optLen);
int SetSockOpt(int level, int optName, const void *optVal, unsigned optLen);
//stream function
int Recv(void *buf, int bytes, int flags = 0); //just for client
int Recv(int s, void *buf, int bytes, int flags = 0);
int Recv(void *buf, int bytes, int seconds, int useconds, int flags = 0); //just for client
int Recv(int s, void *buf, int bytes, int seconds, int useconds, int flags = 0);
int Send(const void *buf, int bytes, int flags = 0); //just for client
int Send(int s, const void *buf, int bytes, int flags = 0);
int RemoteRecv(void *buf, int bytes, int seconds, int useconds, int flags = 0);
int RemoteRecv(void *buf, int bytes, int flags = 0);
int RemoteSend(const void *buf, int bytes, int flags = 0);
void ResetRead() { bytes_read = 0; }
void ResetWrite() { bytes_moved = 0; }
//information database
int GetPeerName(int s, sockaddr_in *sa);
int GetPeerName();
int GetSockName(int s, sockaddr_in *sa);
int GetSockName();
int GetServByName(char *name, char *protocol = 0);
int GetServByPort(int port, char *protocol = 0);
servent *GetServiceInformation(char *name, char *protocol = 0);
servent *GetServiceInformation(int port, char *protocol = 0);
int GetPortNumber();
int GetRemotePortNumber();
int GetHostName(char *sbuf);
int GetIPAddress(char *sbuf);
int GetDomainName(char *sbuf);
int GetBoundIPAddress(char *sbuf);
int GetRemoteHostName(char *sbuf);
hostent *GetHostInformation(char *hostname);
void GetClientInfo(char *client_name, int &r_port);
sa_family_t GetAddressFamily();
sa_family_t GetRemoteAddressFamily();
//Process control function
int ReadSelect(int s, int seconds, int useconds);
int BytesRead() { return bytes_read; }
int BytesMoved() { return bytes_moved; }
int SetBytesRead(int bytes = 0) {return bytes_read = bytes;}
int SetBytesMoved(int bytes = 0) {return bytes_moved = bytes;}
int *GetBytesRead() {return &bytes_read;}
int *GetBytesMoved() {return &bytes_moved;}
int IsConnected() { return is_connected == 1;}
int IsBound(){ return is_bound == 1;}
int SetSocket(int s) {return Mysocket = s;}
int SetRemoteSocket(int s) {return conn_socket = s;}
void ReleaseSocket() { Mysocket = (int)-1;}
void ReleaseRemoteSocket() { conn_socket = (int)-1;}
//Datagram functions
int RecvFrom(int s, sockaddr_in *sa, void *buf, int bytes, int seconds, int useconds, int flags = 0);
int RecvFrom(int s, sockaddr_in *sa, void *buf, int bytes, int flags = 0);
int SendTo(int s, sockaddr_in *sa, void *buf, int bytes, int flags = 0);
int RecvFrom(void *buf, int bytes, int flags = 0);
int RecvFrom(void *buf, int bytes, int seconds, int useconds, int flags = 0);
int SendTo(void *buf, int bytes, int flags = 0);
//Exception handling functions
MySocketError GetSocketError() { return socket_error;}
MySocketError GetSocketError() const { return socket_error;}
MySocketError SetSocketError(MySocketError err) { return socket_error = err;}
MySocketError ResetSocketError() { return socket_error = MYSOCKET_NO_ERROR;}
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -