📄 os_socket.h
字号:
#ifndef __OS_SOCKET_H__#define __OS_SOCKET_H__#ifdef __cplusplusextern "C" {#endiftypedef unsigned short OS_SOCKET_PORT;typedef unsigned long OS_IPV4_ADDR;/* Defaults */#define OS_ANY_PORT 0#if (__OS_TYPE__ == __OS_WIN32__) #include <winsock.h> #pragma comment(lib,"ws2_32.lib") typedef SOCKET OS_SOCKET ;#define OS_IPPROT_TCP SOCK_STREAM#define OS_IPPROT_UDP SOCK_DGRAM #define PRINTERROR(s) \ fprintf(stderr,"\n%: %d\n", s, WSAGetLastError()) #define OS_SocketInit() do{\ WSADATA wsaData;\ WORD wVersionRequested = MAKEWORD(1,1);\ int nRet;\ nRet = WSAStartup(wVersionRequested, &wsaData);\ if (wsaData.wVersion != wVersionRequested)\ { \ fprintf(stderr,"\n Wrong version\n");\ return -1;\ }\ }while(0) #define OS_SocketClear() WSACleanup() #define OS_SocketClose(s) closesocket(s) #define OS_GetIpByHost Win32GetIpByHost #elif (__OS_TYPE__ == __OS_LINUX__) #include <sys/socket.h> #include <netinet/in.h> #include <errno.h> #include <netdb.h> #include <signal.h>#define OS_IPPROT_TCP SOCK_STREAM#define OS_IPPROT_UDP SOCK_DGRAM #define PRINTERROR(s) perror(s) typedef int OS_SOCKET ; #define SOCKET_ERROR (-1) #define INVALID_SOCKET (-1) #define OS_SocketClose(s) close(s) #define OS_SocketInit() signal(SIGPIPE,SIG_IGN) #define OS_SocketClear() #define OS_GetIpByHost LinuxGetIpByHost #endif/* 从一个socket 读出对端的地址,以长整型数字表示*/extern OS_IPV4_ADDR OS_GetPeerAddr(OS_SOCKET sock);/* 取得本机的IP地址*/extern OS_IPV4_ADDR OS_GetLocalAddr();extern OS_STATUS OS_OpenSocketServer(OS_SOCKET * p_sock,int prot_type, OS_SOCKET_PORT server_port);extern OS_STATUS OS_OpenSocketClient(OS_SOCKET * p_sock,int prot_type,char * server_addr,OS_SOCKET_PORT server_port ,OS_SOCKET_PORT client_port);extern OS_STATUS OS_OpenUDPBroadCast(OS_SOCKET * p_sock,OS_SOCKET_PORT bind_port);extern OS_STATUS OS_SendUDP(OS_SOCKET sock,char * addr,OS_SOCKET_PORT port,char * buffer,int len);extern OS_STATUS OS_GetIpByHost(char * host_addr,char * ip_addr,int ip_len);#define OS_OpenTCPServer(sock,port) OS_OpenSocketServer(sock,OS_IPPROT_TCP,(OS_SOCKET_PORT)port)#define OS_OpenUDPServer(sock,port) OS_OpenSocketServer(sock,OS_IPPROT_UDP,(OS_SOCKET_PORT)port)#define OS_OpenTCPClient(cli,addr,port) OS_OpenSocketClient(cli,OS_IPPROT_TCP,addr,(OS_SOCKET_PORT)port,OS_ANY_PORT)#define OS_OpenUDPClient(cli,addr,port) OS_OpenSocketClient(cli,OS_IPPROT_UDP,addr,(OS_SOCKET_PORT)port,OS_ANY_PORT)#ifdef __cplusplus}#endif#endif /* __OS_SOCKET_H__ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -