📄 socket_api.h
字号:
#ifndef SOCKET_API_H
#define SOCKET_API_H
#ifndef _WIN32//POSIX
#include <stdio.h>
#include <sys/time.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h> #include <netinet/in.h>
#include <fcntl.h>
typedef int SOCKET;
int INVALID_SOCKET= -1;
#else//Win32
#include <winsock.h>
typedef SOCKADDR_IN sockaddr_in;
#endif
#include <iostream>
#include <event.h>
using namespace std;
inline int socket_init(void);
inline void setnonblocking( SOCKET __s );
inline int socket_shutdown( SOCKET __s );
inline int sockets_shutdown(void);
inline void print_error( const char* __predesc );
#ifndef _WIN32//POSIX int socket_init(void) { return 0; } void setnonblocking( SOCKET __s ) { fcntl( __s, F_SETFL, O_NONBLOCK ); } int socket_shutdown( SOCKET __s ) { return shutdown( __s, 2 ); } int sockets_shutdown(void) { return 0; } void print_error( const char* __predesc ) { perror( __predesc ); } #else//Win32 int socket_init(void) { WSADATA wsad; WORD wVersionReq= MAKEWORD(1,1); return WSAStartup( wVersionReq, &wsad ); } void setnonblocking( SOCKET __s ) { ULONG nonBlock = 1; ioctlsocket( __s, FIONBIO, &nonBlock ); } int socket_shutdown( SOCKET __s ) { return closesocket( __s ); } int sockets_shutdown(void) { return WSACleanup(); } void print_error( const char* __predesc ) { cerr << __predesc << ": " << WSAGetLastError() << endl; } #endif
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -