问题标签 [posix-select]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
10708 浏览

c - C 中的套接字编程,使用 select() 函数

根据我从这个线程得到的答案,我创建了这个:




当服务器启动时,服务器在if(select(...))语句处被阻塞。

因此,当我运行服务器,然后运行客户端时,客户端连接到服务器(有时在连接之前需要运行客户端几次)。然后该if(select...))语句不再为真,它继续到 else。

之后,客户端关闭连接和程序。但是,这就是我的问题发生的地方,该if(select(...))陈述始终是错误的。我得到这个输出:

此输出将永远重复。if(select(...))怎么不卡在

0 投票
3 回答
54789 浏览

linux - select vs poll vs epoll

I am designing a new server which needs to support thousands of UDP connections (somewhere around 100,000 sessions). Any input or suggestions on which one to use?

0 投票
3 回答
2021 浏览

c++ - 如何使用 POSIX 选择()

我应该在使用文件描述符之前使它们成为非阻塞的select()吗?

0 投票
2 回答
774 浏览

c++ - *nix & C++ 编写非阻塞套接字服务器

我在将阻塞套接字服务器重写为非阻塞版本时遇到了一些问题。实际上,我似乎无法再连接套接字了,我今天大部分时间都在谷歌搜索,并尝试在这里和那里找到不同的解决方案,但它们似乎都不能正常工作......目前我的服务器循环只是不断超时 select() 调用,没有接受新的套接字。客户端套接字似乎在某种程度上连接,因为如果我启动它,它会阻止尝试写入,如果我关闭服务器,它会通知连接已被对等方重置。

以下是正确的假设吗?对于非阻塞服务器,我通常应该打开套接字,然后将其标志设置为非阻塞,绑定它,然后开始调用 select 以读取文件描述符并等待它填充?我需要删除旧的阻塞“accept()”调用,它一直在等待。如果我尝试调用accept,它现在对我来说是-1……

这是我现在正在尝试的相关代码

0 投票
1 回答
80 浏览

c - 我遇到了 select() 的问题

经过多次尝试,我无法得到我的select()工作。我迷路了!结果我开始-1了。我正在遵循本指南

这些是我正在使用的功能:

这就是我获取侦听器文件描述符的方式:

}

0 投票
2 回答
1353 浏览

c - 客户端 select() 的替代方案

select()TCP非阻塞套接字连接的客户端是否有替代方案?

select()主要是针对多个连接,但是我的客户端只有一个连接。因此,我问自己是否有替代功能来识别单个套接字上的 I/O。那可能会更快,我不需要所有的fd_set处理。

0 投票
2 回答
1502 浏览

c - 为什么要使用 select(),当我们有 poll() 和 epoll()

我查看了和之间poll的区别。我不明白什么时候应该使用. 考虑到这一点,我没有看到任何优势,并且拥有一切,甚至更多。epollselectselectpollepollselect

0 投票
2 回答
804 浏览

c - C select() 函数是否已弃用?

我正在阅读一本关于 C 网络编程的书。它是从 2004 年开始的。在示例代码中,作者使用select C 函数来接受来自客户端的多个连接。该功能今天已弃用吗?

我看到有不同的方式来接受多路复用 I/O,比如pollepoll。有什么优势?

0 投票
1 回答
468 浏览

c - 主机和客户端无法在我的聊天程序中使用 select() 进行通信

我正在尝试编写一个简单的聊天程序,一个用户可以连接到主机。两人应该能够互相交谈(他们可能会互相打断,但没关系)。我遇到了困难select()。这是代码:

客户端.c

服务器.c

主机和客户端无法通信。谁能告诉我问题出在哪里?

0 投票
3 回答
10892 浏览

c - 套接字选择()与非块接收

我已经看到了一些select()poll()or进行比较的文章epoll(),并且我看到了许多指南讨论了select()多个套接字的实际用法。

但是,我似乎找不到与recv()没有select(). 如果只有 1 个套接字可读取和 1 个套接字可写入,是否有任何理由使用该select()调用?该recv()方法可以设置为在没有可用数据时不阻塞并返回错误( ),那么当您没有其他要检查的套接字时WSAEWOULDBLOCK为什么还要调用呢?select()非阻塞recv()调用慢得多吗?