utils_socket.h

来自「Path MPICH-V for MPICH the MPI Implement」· C头文件 代码 · 共 81 行

H
81
字号
/** @file utils_socket.h defines the basic function to open, read and write a socket */#ifndef _INCLUDE_UTILS_SOCKET_H_#define _INCLUDE_UTILS_SOCKET_H_/* The size of buffers for sockets */#define MAX_BUF_FOR_SOCKET   512*1024/** create a socket with special option * @return a socket number */int _usocket(void);/** synchronous reception * @param sock : socket to read * @param buf : reception buffer * @param size : attempted message size * @param flag : special flag to use in Un_x recv function * @return number of bytes read */int _urecv(int sock, void *buf, int size, int flag);/** synchronous send * @param sock : socket to write * @param buf : message to send * @param size : attempted message size * @param flag : special flag to use in Un_x recv function * @return number of bytes read */int _usend(int sock, void *buf, int size, int flag);int _usyncfio(int (*iofunc)(int, void*, int, int), int sock, void*buf, int size, int flag);int _usyncio(int (*iofunc)(int, void*, int), int sock, void*buf, int size);/** synchronous read on pipe or file * @param fd: file descriptor of pipe or file * @param buf: buffer of reception * @param size: number of bytes to read * @return number of bytes read */int _uread(int sock, void *buf, int size);/** synchronous writing on pipe or file * @param fd: file descriptor of pipe or file * @param buf: buffer to write * @param size: number of bytes to write * @return number of bytes wrote  */int _uwrite(int fd, void *buf, int size);#define _UCREATE_SYNCIO(funcname, iofunc, fdtype, bufftype, sizetype) \int funcname(fdtype fd, bufftype buff, sizetype size) \{ \  int n, nb = 0; \  \  while(nb < size) \  { \    n = iofunc(fd, ((char *)buff)+nb, size-nb); \    if(n <= 0) \    { \      if((n < 0) && ((errno == EINTR) || (errno == EAGAIN))) continue; \      else if (n < 0) \      { \        printe( "IO %d/%d bytes before error", nb, size); \        return -1; \      } \      else \      { \        printe( "Connection closed by peer, read %d/%d bytes", nb, size); \        break; \      }\    } \    nb += n; \  } \  return nb; \}#endif  /* _INCLUDE_UTILS_SOCKET_H_ */

⌨️ 快捷键说明

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