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

📄 mt_sock.h

📁 展讯平台的mtue源代码, 全面,精简,仅供学习, 商用后果自负
💻 H
字号:
/*****************************************************************************
** File Name:                                                                *
** Author:                                                                   *
** Date:           2006/11/01                                                *
** Copyright:      2006 MTONE, Inc. All Rights Reserved.                     *
** Description:                                                              *
******************************************************************************
**                         Important Edit History                            *
** --------------------------------------------------------------------------*
** DATE           NAME             DESCRIPTION                               *
** 2006/11/01                      Create                                    *
*****************************************************************************/

#ifndef _MT_SOCK_H_
#define _MT_SOCK_H_

#ifdef __cplusplus
    extern   "C"
    {
#endif

#ifdef _WIN32

#include <winsock2.h>
#pragma comment( lib, "ws2_32.lib" )

typedef fd_set mt_fd_set;

#define EWOULDBLOCK WSAEWOULDBLOCK
#define EINPROGRESS WSAEINPROGRESS

#else

#include "sci_types.h"
#include "app_tcp_if.h"

#define INVALID_SOCKET -1

#define INADDR_ANY  (unsigned long)0x00000000
#define INADDR_NONE 0xffffffff

#define EWOULDBLOCK 6
#define EINPROGRESS 22

typedef long SOCKET;

typedef sci_fd_set mt_fd_set;

#endif

#define TCP_MSS 1500
#define TCP_MSS_DATA	1456

#define SOCKX_TIMEO		60 // sec
#define SOCKXBASEERR	20000
#define SOCKXINVAL		(SOCKXBASEERR+1)
#define SOCKXDISCON		(SOCKXBASEERR+2)
#define SOCKXCANCELLED	(SOCKXBASEERR+3)
#define SOCKXTIMEOUT	(SOCKXBASEERR+4)

struct mt_sockaddr
{
	unsigned short family;
	unsigned short port;
	unsigned long  ip_addr;
	char     sa_data[8];
};

struct mt_hostent
{
	char *h_name;
	char **h_aliases;
#ifdef _WIN32
	short h_addrtype;
	short h_length;
#else
	int h_addrtype;
	int h_length;
#endif
	char **h_addr_list;
#define h_addr h_addr_list[0]
};

typedef struct
{
	SOCKET m_sock;
	int    m_cnsl;
	int    m_err; // <0 - sock err, 0 - no err, >SOCKXBASEERR - sockx err
} SOCKETX, *HSOCKETX;

SOCKET mt_sock_socket( int family, int type, int proto );
int mt_sock_connect( SOCKET s, struct mt_sockaddr *addr, int addrlen );
int mt_sock_recv( SOCKET s, char *buf, int len, int flags );
int mt_sock_send( SOCKET s, char *buf, int len, int flags );
int mt_sock_close( SOCKET s );
int mt_sock_errno( SOCKET s );
unsigned long mt_inet_addr( const char *cp );
struct mt_hostent *mt_gethostbyname( const char *name );
int mt_sock_setsockopt_bio( SOCKET s );
int mt_sock_setsockopt_nbio( SOCKET s );
int mt_sock_select( mt_fd_set *readfds, mt_fd_set *writefds, mt_fd_set *exceptfds, long tv );
int mt_sock_getsockopt( SOCKET s, int optname, void *optval );
int mt_sock_setsockopt( SOCKET s, int optname, void *optval );
void MT_FD_ZERO( mt_fd_set *set );
void MT_FD_SET( SOCKET sock, mt_fd_set *set );

SOCKET sock_conn( const char *szaddr, unsigned short nport, int fasyn );
int sock_recv( SOCKET sock, unsigned char *buf, unsigned short size );
int sock_send( SOCKET sock, const unsigned char *buf, unsigned short len );
int sock_cloz( SOCKET sock );
int sock_recvable( SOCKET sock );
int sock_sendable( SOCKET sock );

HSOCKETX sockx_conn( const char *szaddr, unsigned short nport );
int sockx_recv( HSOCKETX hsockx, unsigned char *buf, unsigned short size, long tv );
// int sockx_recv2( HSOCKETX hsockx, unsigned char *buf, unsigned short len, long tv );
int sockx_recv2( HSOCKETX hsockx, unsigned char *buf, unsigned short len, long tv, void (*ondata_func)( unsigned short, void * ), void *user );
int sockx_send( HSOCKETX hsockx, const unsigned char *buf, unsigned short len, long tv );
int sockx_send2( HSOCKETX hsockx, const unsigned char *buf, unsigned short len, long tv );
int sockx_cnsl( HSOCKETX hsockx );
int sockx_cloz( HSOCKETX hsockx );
int sockx_geterrno( HSOCKETX hsockx );
int sockx_seterrno( HSOCKETX hsockx, int err );

int sock_startup( void );
int sock_cleanup( void );

#ifdef __cplusplus
    }
#endif

#endif // _MT_SOCK_H_

⌨️ 快捷键说明

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