hxsock.h

来自「著名的 helix realplayer 基于手机 symbian 系统的 播放」· C头文件 代码 · 共 304 行

H
304
字号
/* ***** BEGIN LICENSE BLOCK ***** 
 * Version: RCSL 1.0/RPSL 1.0 
 *  
 * Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved. 
 *      
 * The contents of this file, and the files included with this file, are 
 * subject to the current version of the RealNetworks Public Source License 
 * Version 1.0 (the "RPSL") available at 
 * http://www.helixcommunity.org/content/rpsl unless you have licensed 
 * the file under the RealNetworks Community Source License Version 1.0 
 * (the "RCSL") available at http://www.helixcommunity.org/content/rcsl, 
 * in which case the RCSL will apply. You may also obtain the license terms 
 * directly from RealNetworks.  You may not use this file except in 
 * compliance with the RPSL or, if you have a valid RCSL with RealNetworks 
 * applicable to this file, the RCSL.  Please see the applicable RPSL or 
 * RCSL for the rights, obligations and limitations governing use of the 
 * contents of the file.  
 *  
 * This file is part of the Helix DNA Technology. RealNetworks is the 
 * developer of the Original Code and owns the copyrights in the portions 
 * it created. 
 *  
 * This file, and the files included with this file, is distributed and made 
 * available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 
 * EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES, 
 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS 
 * FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 
 * 
 * Technology Compatibility Kit Test Suite(s) Location: 
 *    http://www.helixcommunity.org/content/tck 
 * 
 * Contributor(s): 
 *  
 * ***** END LICENSE BLOCK ***** */ 

#if !defined( HXSOCK_H )
#define	HXSOCK_H

#if !defined( _WINSOCKAPI_ )
#include <winsock.h>
#endif

#include "hlxclib/assert.h"

//	Typedefs used to declare our function pointers, and for casting return value from
//	GetProcAddress().

typedef SOCKET (PASCAL FAR	*ACCEPT)( SOCKET, struct sockaddr FAR *, int FAR * );
typedef int (PASCAL FAR	*BIND)( SOCKET, const struct sockaddr FAR *, int );
typedef int (PASCAL FAR * CLOSESOCKET)( SOCKET );
typedef int (PASCAL FAR * CONNECT)( SOCKET, const struct sockaddr FAR *, int );
typedef int (PASCAL FAR	*IOCTLSOCKET)( SOCKET, long, u_long FAR * );
typedef int (PASCAL FAR *GETPEERNAME)( SOCKET, struct sockaddr FAR *, int FAR * );
typedef int (PASCAL FAR *GETSOCKNAME)( SOCKET, struct sockaddr FAR *, int FAR * );
typedef int (PASCAL FAR *GETSOCKOPT)( SOCKET, int, int, char FAR *, int FAR * );
typedef u_long (PASCAL FAR *HTONL)( u_long );
typedef u_short (PASCAL FAR	*HTONS)( u_short );
typedef unsigned long (PASCAL FAR *INET_ADDR)( const char FAR * );
typedef char FAR * (PASCAL FAR * INET_NTOA)( struct in_addr );
typedef int (PASCAL FAR *LISTEN)( SOCKET, int );
typedef u_long (PASCAL FAR * NTOHL)( u_long );
typedef u_short (PASCAL FAR * NTOHS)( u_short );
typedef int (PASCAL FAR * RECV)( SOCKET, char FAR *, int, int );
typedef int (PASCAL FAR * RECVFROM)( SOCKET, char FAR *, int, int, struct sockaddr FAR *, int FAR * );
typedef int (PASCAL FAR * SELECT)( int, fd_set FAR *, fd_set FAR *, fd_set FAR *, const struct timeval FAR * );
typedef int (PASCAL FAR * SEND)( SOCKET, const char FAR *, int, int );
typedef int (PASCAL FAR *SENDTO)( SOCKET, const char FAR *, int, int, const struct sockaddr FAR *, int );
typedef int (PASCAL FAR *SETSOCKOPT)( SOCKET, int, int, const char FAR *, int );
typedef int (PASCAL FAR *SHUTDOWN)( SOCKET, int );
typedef SOCKET (PASCAL FAR *HXSOCKET)( int, int, int );
typedef struct hostent FAR * (PASCAL FAR *GETHOSTBYADDR)( const char FAR *, int, int );
typedef struct hostent FAR * (PASCAL FAR *GETHOSTBYNAME)( const char FAR * );
typedef int (PASCAL FAR *GETHOSTNAME)( char FAR *, int );
#ifndef _WINCE
typedef struct servent FAR * (PASCAL FAR *GETSERVBYPORT)( int, const char FAR * );
typedef struct servent FAR * (PASCAL FAR *GETSERVBYNAME)( const char FAR *, const char FAR * );
typedef struct protoent FAR * (PASCAL FAR *GETPROTOBYNUMBER)( int );
typedef struct protoent FAR * (PASCAL FAR *GETPROTOBYNAME)( const char FAR * );
#endif /* _WINCE */
typedef int (PASCAL FAR	*WSASTARTUP)( WORD, LPWSADATA );
typedef int (PASCAL FAR *WSACLEANUP)( void );
typedef void (PASCAL FAR *WSASETLASTERROR)( int );
typedef int (PASCAL FAR *WSAGETLASTERROR)( void );
#ifndef _WINCE
typedef BOOL (PASCAL FAR *WSAISBLOCKING)( void );
typedef int (PASCAL FAR *WSAUNHOOKBLOCKINGHOOK)( void );
typedef FARPROC (PASCAL FAR *WSASETBLOCKINGHOOK)( FARPROC );
typedef int (PASCAL FAR *WSACANCELBLOCKINGCALL)( void );
typedef HANDLE (PASCAL FAR *WSAASYNCGETSERVBYNAME)( HWND, u_int, const char FAR *, const char FAR *, char FAR *, int );
typedef HANDLE (PASCAL FAR *WSAASYNCGETSERVBYPORT)( HWND, u_int, int, const char FAR *, char FAR *, int );
typedef HANDLE (PASCAL FAR *WSAASYNCGETPROTOBYNAME)( HWND, u_int, const char FAR *, char FAR *, int );
typedef HANDLE (PASCAL FAR *WSAASYNCGETPROTOBYNUMBER)( HWND, u_int, int, char FAR *, int );
typedef HANDLE (PASCAL FAR *WSAASYNCGETHOSTBYNAME)( HWND, u_int, const char FAR *, char FAR *, int );
typedef HANDLE (PASCAL FAR *WSAASYNCGETHOSTBYADDR)( HWND, u_int, const char FAR *, int, int, const char FAR *, int );
typedef int (PASCAL FAR *WSACANCELASYNCREQUEST)( HANDLE );
typedef int (PASCAL FAR *WSAASYNCSELECT)( SOCKET, HWND, u_int, long );
#endif /* _WINCE */
typedef int (PASCAL FAR *__WSAFDISSET)( SOCKET, fd_set FAR * );

class CHXSock
{                                  
public:
	CHXSock();
	~CHXSock();
	
	BOOL InitWinsock();
	BOOL WinSockAvail()		{ return( m_iInited ); }
	
   /*
   	*	These are the exported methods for this class, basically it's a wrapper for winsock
    */

	//	This function branches on whether the socket is TCP or UDP 
	//	(different code for getting through a Firewall)
	int PASCAL FAR		HXconnect( SOCKET s, const struct sockaddr FAR *name, int namelen );
	
	//	This function branches on whether the socket is TCP or UDP 
	//	(different code for getting through a Firewall)
	int PASCAL FAR		HXbind ( SOCKET s, const struct sockaddr FAR *addr, int namelen );
	
	//	This function branches on whether the socket is TCP or UDP 
	//	(different code for getting through a Firewall)
	int PASCAL FAR		HXlisten( SOCKET s, int backlog );
	
	//	This function branches on whether the socket is TCP or UDP 
	//	(different code for getting through a Firewall)
	int PASCAL FAR		HXgetsockname( SOCKET s, struct sockaddr FAR *name, int FAR * namelen );

	//	This function branches on whether the socket is TCP or UDP 
	//	(different code for getting through a Firewall)
	u_int PASCAL FAR	HXaccept( SOCKET s, struct sockaddr FAR *addr, int FAR *addrlen );

	int PASCAL FAR		HXclosesocket( SOCKET s );
	
	int PASCAL FAR		HXioctlsocket( SOCKET s, long cmd, u_long FAR *argp );
	
	int PASCAL FAR		HXgetpeername( SOCKET s, struct sockaddr FAR *name, int FAR * namelen );
	
	int PASCAL FAR		HXgetsockopt( SOCKET s, int level, int optname, char FAR * optval, int FAR *optlen );
	
	u_long PASCAL FAR	HXhtonl( u_long hostlong );
	
	u_short PASCAL FAR	HXhtons( u_short hostshort );
	
	unsigned long PASCAL FAR HXinet_addr( const char FAR * cp );
	
	char FAR * PASCAL FAR	HXinet_ntoa( struct in_addr in );
	
	u_long PASCAL FAR	HXntohl( u_long netlong );
	
	u_short PASCAL FAR	HXntohs( u_short netshort );
	
	int PASCAL FAR		HXrecv( SOCKET s, char FAR * buf, int len, int flags );
	
	int PASCAL FAR		HXrecvfrom( SOCKET s, char FAR * buf, int len, int flags, struct sockaddr FAR *from, int FAR * fromlen );
	
	int PASCAL FAR		HXselect( int nfds, fd_set FAR *readfds, fd_set FAR *writefds, fd_set FAR *exceptfds, const struct timeval FAR *timeout );

	int PASCAL FAR		HXsend( SOCKET s, const char FAR * buf, int len, int flags );
	
	int PASCAL FAR		HXsendto( SOCKET s, const char FAR * buf, int len, int flags, const struct sockaddr FAR *to, int tolen );
	
	int PASCAL FAR		HXsetsockopt( SOCKET s, int level, int optname, const char FAR * optval, int optlen );
	
	int PASCAL FAR		HXshutdown( SOCKET s, int how );
	
	SOCKET PASCAL FAR	HXsocket( int af, int type, int protocol );
	
	/* Database function prototypes */
	struct hostent FAR * PASCAL FAR		HXgethostbyaddr( const char FAR * addr, int len, int type );
	
	struct hostent FAR * PASCAL FAR		HXgethostbyname( const char FAR * name );
	
	int PASCAL FAR 						HXgethostname( char FAR * name, int namelen );
	
#ifndef _WINCE
	struct servent FAR * PASCAL FAR		HXgetservbyport( int port, const char FAR * proto );
	
	struct servent FAR * PASCAL FAR		HXgetservbyname( const char FAR * name,
										 const char FAR * proto );
	
	struct protoent FAR * PASCAL FAR	HXgetprotobynumber( int proto );
	
	struct protoent FAR * PASCAL FAR	HXgetprotobyname( const char FAR * name );
#endif /* _WINCE */

	/* Microsoft Windows Extension function prototypes */
	int PASCAL FAR		HXWSAStartup( WORD wVersionRequired, LPWSADATA lpWSAData );
	
	int PASCAL FAR		HXWSACleanup( void );
	
	void PASCAL FAR		HXWSASetLastError( int iError );
	
	int PASCAL FAR		HXWSAGetLastError( void );
	
#ifndef _WINCE
	BOOL PASCAL FAR		HXWSAIsBlocking( void );
	
	int PASCAL FAR		HXWSAUnhookBlockingHook( void );
	
	FARPROC PASCAL FAR	HXWSASetBlockingHook( FARPROC lpBlockFunc );
	
	int PASCAL FAR		HXWSACancelBlockingCall( void );
	
	HANDLE PASCAL FAR	HXWSAAsyncGetServByName( HWND hWnd, u_int wMsg, const char FAR * name, const char FAR * proto, char FAR * buf, int buflen );
	
	HANDLE PASCAL FAR	HXWSAAsyncGetServByPort( HWND hWnd, u_int wMsg, int port, const char FAR * proto, char FAR * buf, int buflen );
	
	HANDLE PASCAL FAR	HXWSAAsyncGetProtoByName( HWND hWnd, u_int wMsg, const char FAR * name, char FAR * buf, int buflen );
	
	HANDLE PASCAL FAR	HXWSAAsyncGetProtoByNumber( HWND hWnd, u_int wMsg, int number, char FAR * buf, int buflen );
	
	HANDLE PASCAL FAR	HXWSAAsyncGetHostByName( HWND hWnd, u_int wMsg, const char FAR * name, char FAR * buf, int buflen );
	
	HANDLE PASCAL FAR	HXWSAAsyncGetHostByAddr( HWND hWnd, u_int wMsg, const char FAR * addr, int len, int type, const char FAR * buf, int buflen );
	
	int PASCAL FAR		HXWSACancelAsyncRequest( HANDLE hAsyncTaskHandle );

	int PASCAL FAR HXWSAAsyncSelect( SOCKET s, HWND hWnd, u_int wMsg, long lEvent);
#endif /* _WINCE */
	
	int PASCAL FAR HX__WSAFDIsSet( SOCKET s, fd_set FAR *fdSet );

	UINT8			HXGetVersion(void);

protected:
	int			m_iInited;
	HINSTANCE		m_hLib;
	UINT8			m_nVersion;
	
	void SetInited( void );
	
	//	Internal function pointers
	ACCEPT						_hxaccept;
	BIND						_hxbind;
	CLOSESOCKET					_hxclosesocket;
	CONNECT						_hxconnect;
	IOCTLSOCKET					_hxioctlsocket;
	GETPEERNAME					_hxgetpeername;
	GETSOCKNAME					_hxgetsockname;
	GETSOCKOPT					_hxgetsockopt;
	HTONL						_hxhtonl;
	HTONS						_hxhtons;
	INET_ADDR					_hxinet_addr;
	INET_NTOA					_hxinet_ntoa;
	LISTEN						_hxlisten;
	NTOHL						_hxntohl;
	NTOHS						_hxntohs;
	RECV						_hxrecv;
	RECVFROM					_hxrecvfrom;
	SELECT						_hxselect;
	SEND						_hxsend;
	SENDTO						_hxsendto;
	SETSOCKOPT					_hxsetsockopt;
	SHUTDOWN					_hxshutdown;
	HXSOCKET					_hxsocket;
	
	/* Database function prototypes */
	GETHOSTBYADDR				_hxgethostbyaddr;
	GETHOSTBYNAME				_hxgethostbyname;
	GETHOSTNAME					_hxgethostname;
#ifndef _WINCE
	GETSERVBYPORT				_hxgetservbyport;
	GETSERVBYNAME				_hxgetservbyname;
	GETPROTOBYNUMBER			_hxgetprotobynumber;
	GETPROTOBYNAME				_hxgetprotobyname;
#endif /* _WINCE */

	/* Microsoft Windows Extension function prototypes */
	WSASTARTUP					_hxWSAStartup;
	WSACLEANUP					_hxWSACleanup;
	WSASETLASTERROR				_hxWSASetLastError;
	WSAGETLASTERROR				_hxWSAGetLastError;
#ifndef _WINCE
	WSAISBLOCKING				_hxWSAIsBlocking;
	WSAUNHOOKBLOCKINGHOOK		_hxWSAUnhookBlockingHook;
	WSASETBLOCKINGHOOK			_hxWSASetBlockingHook;
	WSACANCELBLOCKINGCALL		_hxWSACancelBlockingCall;
	WSAASYNCGETSERVBYNAME		_hxWSAAsyncGetServByName;
	WSAASYNCGETSERVBYPORT		_hxWSAAsyncGetServByPort;
	WSAASYNCGETPROTOBYNAME		_hxWSAAsyncGetProtoByName;
	WSAASYNCGETPROTOBYNUMBER	_hxWSAAsyncGetProtoByNumber;
	WSAASYNCGETHOSTBYNAME		_hxWSAAsyncGetHostByName;
	WSAASYNCGETHOSTBYADDR		_hxWSAAsyncGetHostByAddr;
	WSACANCELASYNCREQUEST		_hxWSACancelAsyncRequest;
	WSAASYNCSELECT				_hxWSAAsyncSelect;
#endif /* _WINCE */
	__WSAFDISSET				_hxWSAFDIsSet;

	BOOL LoadWinsock( void );
	void UnloadWinsock(BOOL bDestuction = TRUE);
};

// This is the one CHXSock object that we create
extern CHXSock*		sockObj;

#define _INLINE_CHXSOCK_
//#include "sock.inl"
//#include "sock.h"

#define __WSAFDIsSet( arg1, arg2 )		sockObj->HX__WSAFDIsSet( arg1, arg2 )

#endif  

⌨️ 快捷键说明

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