⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mysocket.h.txt

📁 一个很好的socket多线程编程
💻 TXT
字号:
/*file:mysocket.h*/
#include <unistd.h>
#include <sys/types.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/time.h>

/*Define constant*/
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,
MySOCKET_INVALID_ERROR_CODE,

MySOCKET_ACCEPT_ERROR,
MySOCKET_BIND_ERROR,
MySOCKET_BUFOVER_ERROR,
MySOCKET_CONNET_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;
MyScocketError 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 SetSocketType(int st) { return socket_type;}
 int GetSocketType() {port_number = p; }
 void SetBoundSocket(int p) {port_number = p; }
 int GetBouneSocket() {return Mysocket;}
 int GetSocket() {return Mysocket;}
 int GetRemoteSocket() {return conn_soccket;}

public :
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);
int ShutDown(int how = 0);
void ShutDown(int &s,int how = 0);
void ShutDown(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);

int Recv(void *buf,int bytes,int bytes,int flags = 0);
int Recv(int s,void *buf,int bytes,int flags = 0);
int Recv(void *buf,int bytes,int seconds,int useconds,int flags = 0);
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);
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 = );

void ResetRead() {bytes_read =0;}
void ResetWrite() {bytes_moved = 0;}

int GetPeerName(int s,sockaddr_in *sa);
int GetPeerName();
int GetSockName(int s,sockaddr_in *sa);
int GetSockName();
int GetServByteName(char *name,char *protocol =0);
int GetServByPort(int port,char *protocol = 0);
servent *GetServiceInfomation(char *name,char *protocol = 0);
servent *GetServiceInfomation(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();

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 IsConnect() {return is_connected == 1;}
int isBound() {retuirn is_bound == 1;}
int SetSocket(int s) {return Mysocket = s;}
int SetRemotesSocket(int s) {return conn_socket = s;}
void ReleaseSocket() {Mysocket = (int )-1;}
void ReleaseRemoteSocket() {conn_socket = (int ) -1;}

int RecvFrom(int s,sockaddr_in *sa,void *buf,int bytes ,int seconds,int useconds,int flags = 0);
int RecvFrom(int s,sockaddr_int *sa,void *buf,intbytes,int flags = 0);
int SendTo(int s,sockaddr_in *sa,void *buf,int byts,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);
MySocketError GetSocketError(){ return socket_error;}
MySocketError GetSocketError() const{return socket_error;} 
MySocketError SetSocketError( MySocketError err)
{return sock_error = err;}
MySocketError ResetSocketError(){
return socket_error = MySOCKET_NO_ERROR;
}

MySocketError ResetError(){
return socket_error = MySOCKET_NO_ERROR;
}

};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -