问题标签 [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.
c - C 中的套接字编程,使用 select() 函数
根据我从这个线程得到的答案,我创建了这个:
当服务器启动时,服务器在if(select(...))
语句处被阻塞。
因此,当我运行服务器,然后运行客户端时,客户端连接到服务器(有时在连接之前需要运行客户端几次)。然后该if(select...))
语句不再为真,它继续到 else。
之后,客户端关闭连接和程序。但是,这就是我的问题发生的地方,该if(select(...))
陈述始终是错误的。我得到这个输出:
此输出将永远重复。if(select(...))
怎么不卡在
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?
c++ - 如何使用 POSIX 选择()
我应该在使用文件描述符之前使它们成为非阻塞的select()
吗?
c++ - *nix & C++ 编写非阻塞套接字服务器
我在将阻塞套接字服务器重写为非阻塞版本时遇到了一些问题。实际上,我似乎无法再连接套接字了,我今天大部分时间都在谷歌搜索,并尝试在这里和那里找到不同的解决方案,但它们似乎都不能正常工作......目前我的服务器循环只是不断超时 select() 调用,没有接受新的套接字。客户端套接字似乎在某种程度上连接,因为如果我启动它,它会阻止尝试写入,如果我关闭服务器,它会通知连接已被对等方重置。
以下是正确的假设吗?对于非阻塞服务器,我通常应该打开套接字,然后将其标志设置为非阻塞,绑定它,然后开始调用 select 以读取文件描述符并等待它填充?我需要删除旧的阻塞“accept()”调用,它一直在等待。如果我尝试调用accept,它现在对我来说是-1……
这是我现在正在尝试的相关代码
c - 客户端 select() 的替代方案
select()
TCP非阻塞套接字连接的客户端是否有替代方案?
select()
主要是针对多个连接,但是我的客户端只有一个连接。因此,我问自己是否有替代功能来识别单个套接字上的 I/O。那可能会更快,我不需要所有的fd_set
处理。
c - 为什么要使用 select(),当我们有 poll() 和 epoll()
我查看了和之间poll
的区别。我不明白什么时候应该使用. 考虑到这一点,我没有看到任何优势,并且拥有一切,甚至更多。epoll
select
select
poll
epoll
select
c - C select() 函数是否已弃用?
我正在阅读一本关于 C 网络编程的书。它是从 2004 年开始的。在示例代码中,作者使用select C 函数来接受来自客户端的多个连接。该功能今天已弃用吗?
我看到有不同的方式来接受多路复用 I/O,比如poll和epoll。有什么优势?
c - 主机和客户端无法在我的聊天程序中使用 select() 进行通信
我正在尝试编写一个简单的聊天程序,一个用户可以连接到主机。两人应该能够互相交谈(他们可能会互相打断,但没关系)。我遇到了困难select()
。这是代码:
客户端.c
服务器.c
主机和客户端无法通信。谁能告诉我问题出在哪里?
c - 套接字选择()与非块接收
我已经看到了一些select()
与poll()
or进行比较的文章epoll()
,并且我看到了许多指南讨论了select()
多个套接字的实际用法。
但是,我似乎找不到与recv()
没有select()
. 如果只有 1 个套接字可读取和 1 个套接字可写入,是否有任何理由使用该select()
调用?该recv()
方法可以设置为在没有可用数据时不阻塞并返回错误( ),那么当您没有其他要检查的套接字时WSAEWOULDBLOCK
为什么还要调用呢?select()
非阻塞recv()
调用慢得多吗?