老师,我用您视频中的代码也会产生这个问题“第一个客户端可以发送数据,新起第二个客户端也可以发送数据,但是这个时候返回第一个客户端就不可以发送数据了”。
来源:5-2 通过select实现高性能服务器

Harmin
2019-11-13
后来发现如果在整个死循环外面,把accept_fds[]用for循环全置为-1,就没有这个问题了。
我的问题是
- 我不知道其中的原因是什么?为什么不成功的全置为-1就会发生那种情况?
- 在我调试的过程中,我发现输出两个client中的socket,都是一个值3,这样不会引起socket的冲突吗?
写回答
3回答
-
w3n9
2019-11-27
这是我用gcc的
00 -
w3n9
2019-11-27
对于他说的这个,试了一下老师说的那种初始化的方法好像只有第一个是-1,然后后面都是0
我用的是gcc,不知道clang是不是会全部初始化成-1
012019-12-28 -
李超
2019-11-13
select 每次都要清一下。因为select 要将有时间的 fd 放到fds 数组中。换句话说,fds 中的fd 必须是真的有事件才行,不知你理解我的意思没!另外两个客户端是两个进程,每个进程都是从3开始,因为0,1,2,是标准输入,标准输出,和标准错误。
022019-11-23
相似问题