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

📄 csock.h

📁 早期的WINDOWS编程,适合刚接触WINDOWS编程的初学者
💻 H
📖 第 1 页 / 共 2 页
字号:
#ifdef _DEBUG
	;	// Implement in csock.cpp for debug info
#else
      {return ::gethostname(name, namelen);}
#endif

   PPROTOENT getprotobyname(LPCSTR name)
#ifdef _DEBUG
	;	// Implement in csock.cpp for debug info
#else
      {return ::getprotobyname(name);}
#endif

   PPROTOENT getprotobynumber(int number)
#ifdef _DEBUG
	;	// Implement in csock.cpp for debug info
#else
      {return ::getprotobynumber(number);}
#endif

   PSERVENT getservbyname(LPCSTR name, LPCSTR proto)
#ifdef _DEBUG
	;	// Implement in csock.cpp for debug info
#else
      {return ::getservbyname(name, proto);}
#endif

   PSERVENT getservbyport(int port, LPCSTR proto)
#ifdef _DEBUG
	;	// Implement in csock.cpp for debug info
#else
      {return ::getservbyport(port, proto);}
#endif

//
//MS Extensions
//
   HANDLE WSAAsyncGetHostByAddr(HWND hWnd,
   								unsigned int wMsg, 
                                LPCSTR addr,
                                int len,
                                int type,
                                LPTSTR buf,
                                int buflen)
#ifdef _DEBUG
	;	// Implement in csock.cpp for debug info
#else
      {return ::WSAAsyncGetHostByAddr(hWnd, wMsg, addr, len, type, buf, buflen);}
#endif

   HANDLE WSAAsyncGetHostByName(HWND hWnd,
   								unsigned int wMsg,
                                LPCSTR name,
                                LPTSTR buf,
                                int buflen)
#ifdef _DEBUG
	;	// Implement in csock.cpp for debug info
#else
      {return ::WSAAsyncGetHostByName(hWnd, wMsg, name, buf, buflen);}
#endif

   HANDLE WSAAsyncGetProtoByName(HWND hWnd, 
   								 unsigned int wMsg,
                                 LPCSTR name,
                                 LPTSTR buf,
                                 int buflen)
#ifdef _DEBUG
	;	// Implement in csock.cpp for debug info
#else
      {return ::WSAAsyncGetProtoByName(hWnd, wMsg, name, buf, buflen);}
#endif

   HANDLE WSAAsyncGetProtoByNumber( HWND hWnd,
   									unsigned int wMsg,
									int number,
									LPTSTR buf,
									int buflen)
#ifdef _DEBUG
	;	// Implement in csock.cpp for debug info
#else
      {return ::WSAAsyncGetProtoByNumber(hWnd, wMsg, number, buf, buflen);}
#endif

   HANDLE WSAAsyncGetServByName(HWND hWnd, 
   								unsigned int wMsg,
                                LPCSTR name,
                                LPCSTR proto,
                                LPTSTR buf,
                                int buflen)
#ifdef _DEBUG
	;	// Implement in csock.cpp for debug info
#else
      {return ::WSAAsyncGetServByName(hWnd, wMsg, name, proto, buf, buflen);}
#endif

   HANDLE WSAAsyncGetServByPort(HWND hWnd,
   								unsigned int wMsg,
                                int port,
                                LPCSTR proto,
                                LPTSTR buf,
                                int buflen)
#ifdef _DEBUG
	;	// Implement in csock.cpp for debug info
#else
      {return ::WSAAsyncGetServByPort(hWnd, wMsg, port, proto, buf, buflen);}
#endif

   int WSAAsyncSelect(SOCKET s, HWND hWnd, unsigned int wMsg, long lEvent)
#ifdef _DEBUG
	;	// Implement in csock.cpp for debug info
#else
      {return ::WSAAsyncSelect(s, hWnd, wMsg, lEvent);}
#endif

   int WSAAsyncSelect(HWND hWnd, unsigned int wMsg, long lEvent)
      {return WSAAsyncSelect(m_sockCurrentSocket, hWnd, wMsg, lEvent);}

   int WSACancelAsyncRequest(HANDLE hAsyncTaskHandle)
#ifdef _DEBUG
	;	// Implement in csock.cpp for debug info
#else
      {return ::WSACancelAsyncRequest(hAsyncTaskHandle);}
#endif

   int WSACancelBlockingCall(void)
#ifdef _DEBUG
	;	// Implement in csock.cpp for debug info
#else
      {return ::WSACancelBlockingCall();}
#endif

   int WSACleanup(void)
#ifdef _DEBUG
	;	// Implement in csock.cpp for debug info
#else
      {return ::WSACleanup();}
#endif

   int WSAGetLastError(void)
#ifdef _DEBUG
	;	// Implement in csock.cpp for debug info
#else
      {return ::WSAGetLastError();}
#endif

   BOOL WSAIsBlocking(void)
#ifdef _DEBUG
	;	// Implement in csock.cpp for debug info
#else
      {return ::WSAIsBlocking();}
#endif

   FARPROC WSASetBlockingHook(FARPROC lpBlockFunc)
#ifdef _DEBUG
	;	// Implement in csock.cpp for debug info
#else
      {return ::WSASetBlockingHook(lpBlockFunc);}
#endif

   void WSASetLastError(int iError)
#ifdef _DEBUG
	;	// Implement in csock.cpp for debug info
#else
      {::WSASetLastError(iError);}
#endif

   int WSAStartup(WORD wVersionRequired, LPWSADATA lpWSAData)
#ifdef _DEBUG
	;	// Implement in csock.cpp for debug info
#else
      {return ::WSAStartup(wVersionRequired, lpWSAData);}
#endif

   int WSAUnhookBlockingHook(void)
#ifdef _DEBUG
	;	// Implement in csock.cpp for debug info
#else
      {return ::WSAUnhookBlockingHook();}
#endif

#ifdef	_DEBUG
	void	PrintError(int ErrorCode);
	void	PrintError(void) {PrintError(WSAGetLastError());}
#ifdef _AFX
	CString StringError(int ErrorCode);
	CString StringError(void) {return StringError(WSAGetLastError());}
#else
    TCHAR   *StringError(int ErrorCode);
    TCHAR   *StringError(void) {return StringError(WSAGetLastError());}
#endif //_AFX
#else
	void	PrintError(int ErrorCode) {;}
	void	PrintError(void)		  {PrintError(WSAGetLastError());}
#ifdef _AFX
	CString	StringError(int ErrorCode)	{CString retString; return retString;}
	CString StringError(void)			{return StringError(WSAGetLastError);}
#endif //_AFX
#endif

//
//Win32 Specific
//

#ifdef WIN32
// ReadFile()
// WriteFile()
// _open_osf_handle()
// _fdopen()
// _read()
// _write()
// fprintf()
// fscanf()

#ifdef WSARECVEX
   int WSARecvEx(SOCKET s, LPTSTR buf, int len, int *flags)   
#ifdef _DEBUG
	;	// Implement in csock.cpp for debug info
#else
      {return ::WSARecvEx(s, buf, len, flags);}
#endif

   int WSARecvEx(LPTSTR buf, int len, int *flags)   
      {return ::WSARecvEx(m_sockCurrentSocket, buf, len, flags);}
#endif
#endif   //WIN32 

//MFC specific implementation
#ifdef _AFX
	unsigned long inet_addr(CString cp)
		{return inet_addr((LPCSTR)cp);}

	int send(SOCKET s, CString buf, int flags)
		{return send(s, buf, buf.GetLength(), flags);}
   
	int sendto(SOCKET s, CString buf, int flags,
                     const struct sockaddr FAR *to, int tolen)
		{return sendto(s, buf, buf.GetLength(), flags, to, tolen);}

	struct hostent *gethostbyaddr(CString addr, int type)
		{return gethostbyaddr(addr, addr.GetLength(), type);}

	struct hostent *gethostbyname(CString name)
      {return gethostbyname(name);}

	int gethostname(CString name){
    	LPTSTR p = name.GetBuffer(128); 
      	int iret = gethostname(p, 128);
      	name.ReleaseBuffer(-1);
      	return iret;
      	}

	struct protoent *getprotobyname(CString name)
      {return getprotobyname((LPCSTR)name);}

	struct servent *getservbyname(CString name, CString proto)
      {return getservbyname((LPCSTR)name, (LPCSTR)proto);}

	struct servent *getservbyport(int port, CString proto)
      {return getservbyport(port, (LPCSTR)proto);}

#endif
public:
#ifdef WS_USE_REGISTERED_WINDOW_MSGS 
	static UINT m_WSA_EVENT;
	static UINT	m_WSA_READ;
	static UINT m_WSA_WRITE;
	static UINT m_WSA_ACCEPT;
	static UINT m_WSA_CONNECT;
	static UINT m_WSA_CLOSE;
	static UINT m_WSA_OOB;
#endif
protected:
	SOCKET	m_sockCurrentSocket;
	enumSocketState m_eCurrentSocketState;
	SOCKADDR_IN	m_SockAddrIn;
private:
	static unsigned long m_ulCWinSockInitialized;
	static BOOL m_bRegisteredWinSockMsgs;
	WSADATA	m_wsaData;
#ifdef _DEBUG
	int	m_iLastError;		//Last error
#endif

public:
	enumSocketState GetCurrentSocketState(void)	{return m_eCurrentSocketState;}
	int GetMaxSockets(void)	{return m_wsaData.iMaxSockets;}
};

const unsigned int WSA_EVENT    (WM_USER+1);
const unsigned int WSA_READ		((WSA_EVENT)+1);
const unsigned int WSA_WRITE	((WSA_READ)+1);
const unsigned int WSA_ACCEPT	((WSA_WRITE)+1);
const unsigned int WSA_CONNECT	((WSA_ACCEPT)+1);
const unsigned int WSA_CLOSE	((WSA_CONNECT)+1);
const unsigned int WSA_OOB		((WSA_CLOSE)+1);
#endif

⌨️ 快捷键说明

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