您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ FD_TO_SOCKET函数代码示例

51自学网 2021-06-01 20:40:55
  C++
这篇教程C++ FD_TO_SOCKET函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中FD_TO_SOCKET函数的典型用法代码示例。如果您正苦于以下问题:C++ FD_TO_SOCKET函数的具体用法?C++ FD_TO_SOCKET怎么用?C++ FD_TO_SOCKET使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了FD_TO_SOCKET函数的30个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: myAccept

static intmyAccept (int fd, struct sockaddr *addr, socklen_t *addrlen){  SOCKET fh = SOCKET_ERROR;  int new_fd;  /* Parameters to system calls are not guaranteed to generate a SIGSEGV     and for this reason we must touch them manually.  */  _gst_grey_oop_range (addr, *addrlen);#if defined SOCK_CLOEXEC && defined HAVE_ACCEPT4 && !defined __MSVCRT__  if (have_sock_cloexec >= 0)    {      fh = accept4 (FD_TO_SOCKET (fd), addr, addrlen, SOCK_CLOEXEC);      if (!check_have_sock_cloexec (fh, ENOSYS))	return -1;    }#endif  if (fh == SOCKET_ERROR)    {      fh = accept (FD_TO_SOCKET (fd), addr, addrlen);      socket_set_cloexec (fh);    }  new_fd = (fh == SOCKET_ERROR ? -1 : SOCKET_TO_FD (fh));  if (new_fd != SOCKET_ERROR)    _gst_register_socket (new_fd, false);  return new_fd;}
开发者ID:NicolasPetton,项目名称:smalltalk,代码行数:29,


示例2: _gl_close_fd_maybe_socket

static int_gl_close_fd_maybe_socket (int fd){  SOCKET sock = FD_TO_SOCKET (fd);  WSANETWORKEVENTS ev;  ev.lNetworkEvents = 0xDEADBEEF;  WSAEnumNetworkEvents (sock, NULL, &ev);  if (ev.lNetworkEvents != 0xDEADBEEF)    {      /* FIXME: other applications, like squid, use an undocumented	 _free_osfhnd free function.  But this is not enough: The 'osfile'	 flags for fd also needs to be cleared, but it is hard to access it.	 Instead, here we just close twice the file descriptor.  */      if (closesocket (sock))	{	  set_winsock_errno ();	  return -1;	}      else	{	  /* This call frees the file descriptor and does a	     CloseHandle ((HANDLE) _get_osfhandle (fd)), which fails.  */	  _close (fd);	  return 0;	}    }  else    return _close (fd);}
开发者ID:BytEvil,项目名称:screensavers.rsxs,代码行数:30,


示例3: ioctl_fd_maybe_socket

static intioctl_fd_maybe_socket (const struct fd_hook *remaining_list,                       gl_ioctl_fn primary,                       int fd, int request, void *arg){  SOCKET sock;  WSANETWORKEVENTS ev;  /* Test whether fd refers to a socket.  */  sock = FD_TO_SOCKET (fd);  ev.lNetworkEvents = 0xDEADBEEF;  WSAEnumNetworkEvents (sock, NULL, &ev);  if (ev.lNetworkEvents != 0xDEADBEEF)    {      /* fd refers to a socket.  */      if (ioctlsocket (sock, request, arg) < 0)        {          set_winsock_errno ();          return -1;        }      else        return 0;    }  else    /* Some other type of file descriptor.  */    return execute_ioctl_hooks (remaining_list, primary, fd, request, arg);}
开发者ID:czchen,项目名称:debian-libvirt,代码行数:27,


示例4: rpl_recvfrom

ssize_trpl_recvfrom (int fd, void *buf, size_t len, int flags, struct sockaddr *from,              socklen_t *fromlen){  SOCKET sock = FD_TO_SOCKET (fd);  if (sock == INVALID_SOCKET)    {      errno = EBADF;      return -1;    }  else    {      int frombufsize = (from != NULL ? *fromlen : 0);      int r = recvfrom (sock, buf, len, flags, from, fromlen);      if (r < 0)        set_winsock_errno ();      /* Winsock recvfrom() only returns a valid 'from' when the socket is         connectionless.  POSIX gives a valid 'from' for all types of         sockets.  */      else if (from != NULL && *fromlen == frombufsize)        rpl_getpeername (fd, from, fromlen);      return r;    }}
开发者ID:cooljeanius,项目名称:wget,代码行数:28,


示例5: rpl_setsockopt

intrpl_setsockopt (int fd, int level, int optname, const void *optval, socklen_t optlen){  SOCKET sock = FD_TO_SOCKET (fd);  int r;  if (sock == INVALID_SOCKET)    {      errno = EBADF;      return -1;    }  else    {      if (level == SOL_SOCKET          && (optname == SO_RCVTIMEO || optname == SO_SNDTIMEO))        {          const struct timeval *tv = optval;          int milliseconds = tv->tv_sec * 1000 + tv->tv_usec / 1000;          optval = &milliseconds;          r = setsockopt (sock, level, optname, optval, sizeof (int));        }      else        {          r = setsockopt (sock, level, optname, optval, optlen);        }      if (r < 0)        set_winsock_errno ();      return r;    }}
开发者ID:Prelude-SIEM,项目名称:libprelude,代码行数:32,


示例6: rpl_connect

intrpl_connect (int fd, const struct sockaddr *sockaddr, socklen_t len){  SOCKET sock = FD_TO_SOCKET (fd);  if (sock == INVALID_SOCKET)    {      errno = EBADF;      return -1;    }  else    {      int r = connect (sock, sockaddr, len);      if (r < 0)        {          /* EINPROGRESS is not returned by WinSock 2.0; for backwards             compatibility, connect(2) uses EWOULDBLOCK.  */          if (WSAGetLastError () == WSAEWOULDBLOCK)            WSASetLastError (WSAEINPROGRESS);          set_winsock_errno ();        }      return r;    }}
开发者ID:GostCrypt,项目名称:GnuTLS,代码行数:26,


示例7: myConnect

/* Same as connect, but forces the socket to be in non-blocking mode */static intmyConnect (int fd, struct sockaddr *sockaddr, int len){  SOCKET sock = FD_TO_SOCKET (fd);  int rc;#ifdef __MSVCRT__  unsigned long iMode = 1;  ioctlsocket (sock, FIONBIO, &iMode);#elif defined F_GETFL#ifndef O_NONBLOCK             #warning Non-blocking I/O could not be enabled#else  int oldflags = fcntl (sock, F_GETFL, NULL);  if (!(oldflags & O_NONBLOCK))    fcntl (sock, F_SETFL, oldflags | O_NONBLOCK);#endif#endif    fix_sockaddr (sockaddr);  rc = connect (sock, sockaddr, len);  if (rc == 0 || is_socket_error (EINPROGRESS) || is_socket_error (EWOULDBLOCK))    return 0;  else    return -1;}
开发者ID:NicolasPetton,项目名称:smalltalk,代码行数:28,


示例8: ssl_connect_wget

boolssl_connect_wget (int fd, const char *hostname){  SSL *conn;  struct scwt_context scwt_ctx;  struct openssl_transport_context *ctx;  DEBUGP (("Initiating SSL handshake./n"));  assert (ssl_ctx != NULL);  conn = SSL_new (ssl_ctx);  if (!conn)    goto error;#if OPENSSL_VERSION_NUMBER >= 0x0090806fL && !defined(OPENSSL_NO_TLSEXT)  /* If the SSL library was build with support for ServerNameIndication     then use it whenever we have a hostname.  If not, don't, ever. */  if (! is_valid_ip_address (hostname))    {      if (! SSL_set_tlsext_host_name (conn, hostname))        {          DEBUGP (("Failed to set TLS server-name indication."));          goto error;        }    }#endif#ifndef FD_TO_SOCKET# define FD_TO_SOCKET(X) (X)#endif  if (!SSL_set_fd (conn, FD_TO_SOCKET (fd)))    goto error;  SSL_set_connect_state (conn);  scwt_ctx.ssl = conn;  if (run_with_timeout(opt.read_timeout, ssl_connect_with_timeout_callback,                       &scwt_ctx)) {    DEBUGP (("SSL handshake timed out./n"));    goto timeout;  }  if (scwt_ctx.result <= 0 || conn->state != SSL_ST_OK)    goto error;  ctx = xnew0 (struct openssl_transport_context);  ctx->conn = conn;  /* Register FD with Wget's transport layer, i.e. arrange that our     functions are used for reading, writing, and polling.  */  fd_register_transport (fd, &openssl_transport, ctx);  DEBUGP (("Handshake successful; connected socket %d to SSL handle 0x%0*lx/n",           fd, PTR_FORMAT (conn)));  return true; error:  DEBUGP (("SSL handshake failed./n"));  print_errors (); timeout:  if (conn)    SSL_free (conn);  return false;}
开发者ID:giuseppe,项目名称:wget,代码行数:60,


示例9: mySendto

static intmySendto (int fd, const char *buf, int len, int flags,	  struct sockaddr *to, int tolen){  fix_sockaddr (to);  return sendto (FD_TO_SOCKET (fd), buf, len, flags, to, tolen);}
开发者ID:NicolasPetton,项目名称:smalltalk,代码行数:7,


示例10: _gst_send

ssize_t_gst_send (int fd,	   PTR buffer,	   size_t size,	   int flags){#ifdef HAVE_SOCKETS  ssize_t result;  int save_errno = errno;  for (;;)    {      result = send (FD_TO_SOCKET (fd), buffer, size, flags);      if (is_socket_error (EFAULT))        abort ();      if (is_socket_error (EINTR))	clear_socket_error ();      else	break;    }  if (errno == EINTR)    errno = save_errno;  return result;#else  errno = ENOSYS;  return -1;#endif}
开发者ID:MrVertinskis,项目名称:smalltalk,代码行数:31,


示例11: myListen

static intmyListen (int fd, int backlog){  int r = listen (FD_TO_SOCKET (fd), backlog);  if (r != SOCKET_ERROR)    _gst_register_socket (fd, true);  return r;}
开发者ID:NicolasPetton,项目名称:smalltalk,代码行数:8,


示例12: ssl_connect_wget

boolssl_connect_wget (int fd){  static const int cert_type_priority[] = {    GNUTLS_CRT_X509, GNUTLS_CRT_OPENPGP, 0  };  struct wgnutls_transport_context *ctx;  gnutls_session session;  int err;  int allowed_protocols[4] = {0, 0, 0, 0};  gnutls_init (&session, GNUTLS_CLIENT);  gnutls_set_default_priority (session);  gnutls_certificate_type_set_priority (session, cert_type_priority);  gnutls_credentials_set (session, GNUTLS_CRD_CERTIFICATE, credentials);#ifndef FD_TO_SOCKET# define FD_TO_SOCKET(X) (X)#endif  gnutls_transport_set_ptr (session, (gnutls_transport_ptr) FD_TO_SOCKET (fd));  err = 0;  switch (opt.secure_protocol)    {    case secure_protocol_auto:      break;    case secure_protocol_sslv2:    case secure_protocol_sslv3:      allowed_protocols[0] = GNUTLS_SSL3;      err = gnutls_protocol_set_priority (session, allowed_protocols);      break;    case secure_protocol_tlsv1:      allowed_protocols[0] = GNUTLS_TLS1_0;      allowed_protocols[1] = GNUTLS_TLS1_1;      allowed_protocols[2] = GNUTLS_TLS1_2;      err = gnutls_protocol_set_priority (session, allowed_protocols);      break;    default:      abort ();    }  if (err < 0)    {      logprintf (LOG_NOTQUIET, "GnuTLS: %s/n", gnutls_strerror (err));      gnutls_deinit (session);      return false;    }  err = gnutls_handshake (session);  if (err < 0)    {      logprintf (LOG_NOTQUIET, "GnuTLS: %s/n", gnutls_strerror (err));      gnutls_deinit (session);      return false;    }  ctx = xnew0 (struct wgnutls_transport_context);  ctx->session = session;  fd_register_transport (fd, &wgnutls_transport, ctx);  return true;}
开发者ID:db48x,项目名称:wget-warc,代码行数:58,


示例13: myGetsockopt

static intmyGetsockopt (int fd, int level, int optname, char *optval, socklen_t *optlen){  /* Parameters to system calls are not guaranteed to generate a SIGSEGV     and for this reason we must touch them manually.  */  _gst_grey_oop_range (optval, *optlen);  return getsockopt (FD_TO_SOCKET (fd), level, optname, optval, optlen);}
开发者ID:NicolasPetton,项目名称:smalltalk,代码行数:9,


示例14: myGetsockname

static intmyGetsockname (int fd, struct sockaddr *addr, socklen_t *addrlen){  /* Parameters to system calls are not guaranteed to generate a SIGSEGV     and for this reason we must touch them manually.  */  _gst_grey_oop_range (addr, *addrlen);  return getsockname (FD_TO_SOCKET (fd), addr, addrlen);}
开发者ID:NicolasPetton,项目名称:smalltalk,代码行数:9,


示例15: rpl_listen

intrpl_listen (int fd, int backlog){  SOCKET sock = FD_TO_SOCKET (fd);  int r = listen (sock, backlog);  if (r < 0)    set_winsock_errno ();  return r;}
开发者ID:Chronic-Dev,项目名称:gnutls,代码行数:10,


示例16: rpl_send

ssize_trpl_send (int fd, const void *buf, size_t len, int flags){  SOCKET sock = FD_TO_SOCKET (fd);  int r = send (sock, buf, len, flags);  if (r < 0)    set_winsock_errno ();  return r;}
开发者ID:Airswoop1,项目名称:sample_app,代码行数:10,


示例17: rpl_getpeername

intrpl_getpeername (int fd, struct sockaddr *addr, socklen_t *addrlen){  SOCKET sock = FD_TO_SOCKET (fd);  int r = getpeername (sock, addr, addrlen);  if (r < 0)    set_winsock_errno ();  return r;}
开发者ID:djmitche,项目名称:gnulib,代码行数:10,


示例18: rpl_shutdown

intrpl_shutdown (int fd, int how){  SOCKET sock = FD_TO_SOCKET (fd);  int r = shutdown (sock, how);  if (r < 0)    set_winsock_errno ();  return r;}
开发者ID:DesmondWu,项目名称:gnulib,代码行数:10,


示例19: rpl_bind

intrpl_bind (int fd, struct sockaddr *sockaddr, int len){  SOCKET sock = FD_TO_SOCKET (fd);  int r = bind (sock, sockaddr, len);  if (r < 0)    set_winsock_errno ();  return r;}
开发者ID:Distrotech,项目名称:libprelude,代码行数:10,


示例20: rpl_getsockopt

intrpl_getsockopt (int fd, int level, int optname, void *optval, socklen_t *optlen){  SOCKET sock = FD_TO_SOCKET (fd);  if (sock == INVALID_SOCKET)    {      errno = EBADF;      return -1;    }  else    {      int r;      if (level == SOL_SOCKET          && (optname == SO_RCVTIMEO || optname == SO_SNDTIMEO))        {          int milliseconds;          int milliseconds_len = sizeof (int);          struct timeval tv;          size_t n;          r = getsockopt (sock, level, optname, (char *) &milliseconds,                          &milliseconds_len);          tv.tv_sec = milliseconds / 1000;          tv.tv_usec = (milliseconds - 1000 * tv.tv_sec) * 1000;          n = sizeof (struct timeval);          if (n > *optlen)            n = *optlen;          memcpy (optval, &tv, n);          *optlen = n;        }      else        {          r = getsockopt (sock, level, optname, optval, optlen);        }      if (r < 0)        set_winsock_errno ();      return r;    }}
开发者ID:FaSan,项目名称:Mingle,代码行数:43,


示例21: VMPI_close

int VMPI_close(int fildes){    SOCKET sd = FD_TO_SOCKET(fildes);        if(  WIN32_is_socket( sd ) )    {        int result = closesocket( sd );        if( (result == SOCKET_ERROR) || (result == INVALID_SOCKET) )        {            errno = WIN32_winsock_to_errno();            return -1;        }        return result;    }    return _close( fildes );}
开发者ID:Corsaair,项目名称:redtamarin,代码行数:19,


示例22: rpl_shutdown

intrpl_shutdown (int fd, int how){  SOCKET sock = FD_TO_SOCKET (fd);  if (sock == INVALID_SOCKET)    {      errno = EBADF;      return -1;    }  else    {      int r = shutdown (sock, how);      if (r < 0)        set_winsock_errno ();      return r;    }}
开发者ID:AtomicKity,项目名称:guile,代码行数:19,


示例23: rpl_bind

intrpl_bind (int fd, const struct sockaddr *sockaddr, socklen_t len){  SOCKET sock = FD_TO_SOCKET (fd);  if (sock == INVALID_SOCKET)    {      errno = EBADF;      return -1;    }  else    {      int r = bind (sock, sockaddr, len);      if (r < 0)        set_winsock_errno ();      return r;    }}
开发者ID:AllenDowney,项目名称:SoftwareSystems,代码行数:19,


示例24: rpl_listen

intrpl_listen (int fd, int backlog){  SOCKET sock = FD_TO_SOCKET (fd);  if (sock == INVALID_SOCKET)    {      errno = EBADF;      return -1;    }  else    {      int r = listen (sock, backlog);      if (r < 0)        set_winsock_errno ();      return r;    }}
开发者ID:Distrotech,项目名称:gnulib,代码行数:19,


示例25: rpl_getpeername

intrpl_getpeername (int fd, struct sockaddr *addr, socklen_t *addrlen){  SOCKET sock = FD_TO_SOCKET (fd);  if (sock == INVALID_SOCKET)    {      errno = EBADF;      return -1;    }  else    {      int r = getpeername (sock, addr, addrlen);      if (r < 0)        set_winsock_errno ();      return r;    }}
开发者ID:Distrotech,项目名称:gnulib,代码行数:19,


示例26: rpl_ioctl

intrpl_ioctl (int fd, int req, ...){  void *buf;  va_list args;  SOCKET sock;  int r;  va_start (args, req);  buf = va_arg (args, void *);  va_end (args);  sock = FD_TO_SOCKET (fd);  r = ioctlsocket (sock, req, buf);  if (r < 0)    set_winsock_errno ();  return r;}
开发者ID:4solo,项目名称:cs35,代码行数:19,


示例27: rpl_send

ssize_trpl_send (int fd, const void *buf, size_t len, int flags){  SOCKET sock = FD_TO_SOCKET (fd);  if (sock == INVALID_SOCKET)    {      errno = EBADF;      return -1;    }  else    {      int r = send (sock, buf, len, flags);      if (r < 0)        set_winsock_errno ();      return r;    }}
开发者ID:AGSaidi,项目名称:hacked-libvirt,代码行数:19,


示例28: VMPI_shutdown

int VMPI_shutdown(int socket, int how){    int result;    if( WIN32_SocketStart(2,2) == 0 )    {        result = shutdown( FD_TO_SOCKET(socket), how );    }    else    {        return -1;    }    if( (result == SOCKET_ERROR) || (result == INVALID_SOCKET) )    {        errno = WIN32_winsock_to_errno();        return -1;    }    return result;}
开发者ID:Corsaair,项目名称:redtamarin,代码行数:20,


示例29: VMPI_send

int VMPI_send(int socket, const void *buffer, size_t length, int flags){    int result;    if( WIN32_SocketStart(2,2) == 0 )    {        result = send( FD_TO_SOCKET(socket), (const char *)buffer, (int)length, flags );    }    else    {        return -1;    }    if( (result == SOCKET_ERROR) || (result == INVALID_SOCKET) )    {        errno = WIN32_winsock_to_errno();        return -1;    }    return result;}
开发者ID:Corsaair,项目名称:redtamarin,代码行数:20,


示例30: VMPI_sendto

int VMPI_sendto(int socket, const void *message, size_t length, int flags, const struct sockaddr *dest_addr, socklen_t dest_len){    int result;    if( WIN32_SocketStart(2,2) == 0 )    {        result = sendto( FD_TO_SOCKET(socket), (const char *)message, (int)length, flags, dest_addr, dest_len );    }    else    {        return -1;    }    if( (result == SOCKET_ERROR) || (result == INVALID_SOCKET) )    {        errno = WIN32_winsock_to_errno();        return -1;    }    return result;}
开发者ID:Corsaair,项目名称:redtamarin,代码行数:20,



注:本文中的FD_TO_SOCKET函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ FD_ZERO函数代码示例
C++ FD_SET函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。