⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 poll.c

📁 穿越防火墙技术代码
💻 C
字号:
/*port/poll.cCopyright (C) 1999 Lars Brinkhoff.  See COPYING for terms and conditions.*/#include "config.h"#ifndef HAVE_POLL#include <unistd_.h>#include <sys/poll_.h>#include <sys/time.h>#include <sys/types.h>#ifndef HAVE_SELECT#error "Must have either poll() or select()."#endifintpoll (struct pollfd *p, int n, int t){  struct timeval t2, *t3;  fd_set r, w, e;  int i, m, ret;  FD_ZERO (&r);  FD_ZERO (&w);  FD_ZERO (&e);  m = -1;  for (i = 0; i < n; i++)    {      if (p[i].fd < 0)	continue;      if (p[i].events & POLLIN)        FD_SET (p[i].fd, &r);      if (p[i].events & POLLOUT)        FD_SET (p[i].fd, &w);      FD_SET (p[i].fd, &e); /* or something */      if (p[i].fd > m)        m = p[i].fd;    }  if (m == -1)    return 0;  if (t < 0)    t3 = NULL;  else    {      t2.tv_sec = t / 1000;      t2.tv_usec = 1000 * (t % 1000);      t3 = &t2;    }  ret = select (m + 1, &r, &w, &e, t3);  if (ret != -1)    for (i = 0; i < n; i++)      {	p[i].revents = 0;	if (FD_ISSET (p[i].fd, &r))	  p[i].revents |= POLLIN;	if (FD_ISSET (p[i].fd, &w))	  p[i].revents |= POLLOUT;	if (FD_ISSET (p[i].fd, &e))	  p[i].revents |= POLLERR; /* or something */      }  return ret;}#endif /* HAVE_POLL */

⌨️ 快捷键说明

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