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

📄 netsocket.h

📁 利用HyfaFax传真的传输协议(与FTP协议相似),编写发送传真到目的传真服务器的客户代码!
💻 H
字号:
#if !defined _NETSOCKET_H_INCLUDE_
#define _NETSOCKET_H_INCLUDE_
#include "platform.h"

#ifdef WIN32
	/*
	for windows
	*/
	#include <winsock.h>
	#define GETERROR			WSAGetLastError()
	#define CLOSESOCKET(s)		closesocket(s)
	#define IOCTLSOCKET(s,c,a)  ioctlsocket(s,c,a)
	#define CONN_INPRROGRESS	WSAEWOULDBLOCK
	typedef int socklen_t;
#else
	/*
	for linux
	*/
	#include <sys/time.h>
	#include <stddef.h>
	#include <unistd.h>
	#include <stdlib.h>
	#include <sys/wait.h>
	typedef int            BOOL;
	typedef unsigned char  BYTE;
	typedef unsigned short WORD;
	typedef unsigned int   DWORD;
	#define TRUE  1
	#define FALSE 0

	/*
	for socket
	*/
	#include <sys/socket.h>
	#include <netinet/in.h>
	#include <unistd.h>
	#include <sys/ioctl.h>
	#include <netdb.h>
	#include <sys/errno.h>
	#include <arpa/inet.h>

	typedef int SOCKET;
	typedef sockaddr_in			SOCKADDR_IN;
	typedef sockaddr			SOCKADDR;
	#define INVALID_SOCKET	    (-1)
	#define SOCKET_ERROR        (-1)
	#define GETERROR			errno
	#define WSAEWOULDBLOCK		EWOULDBLOCK
	#define CLOSESOCKET(s)		close(s)
	#define IOCTLSOCKET(s,c,a)  ioctl(s,c,a)
	#define CONN_INPRROGRESS	EINPROGRESS
#endif

const int PROTOCOL_UDP	=	1;
const int PROTOCOL_TCP	=	2;

class NetSocket
{
public:
	NetSocket();
	virtual ~NetSocket();
	bool Attach(SOCKET socket);
	bool Close();
	bool Connect(char *szAddr,int port,unsigned long ip = 0);
	bool Listen();
	bool Initialize(int protocol);
	
	int Recv(char *buf,int len);
	int Send(char *buf,int len);
	int RecvFrom(char *buf,int len,SOCKADDR_IN *addr,int *addrlen);
	int SendTo(char *buf,int len,SOCKADDR_IN *addr);

	bool CanWrite();
	bool CanRead();
	bool HasExcept();

	bool SetNonBlocking();
	bool SetAsync();
	bool BindAddr(char *ip,int port);
	void Reset();

	bool SetSendBufferSize(int len);
	bool SetRecvBufferSize(int len);
	bool SetReuseAddr(bool reuse);

	bool GetLocalAddr (char *addr, short *port,unsigned long *ip = NULL);
	bool GetRemoteAddr(char *addr,short *port,unsigned long *ip = NULL);
	
	SOCKET Accept();
	unsigned long   GetMaxCanReadSize();
	SOCKET FromHandle();

private:
	bool _NetStartUp(int VersionHigh,int VersionLow);
	bool _NetCleanUp();

	SOCKET		m_socket;
	static int	m_nCount;
	bool        m_bNonBlocking;
};

#endif

⌨️ 快捷键说明

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