📄 mt_sock.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 + -