我正在阅读Richard Stevens的《UNIX网络编程》第一卷,并尝试编写一个使用Telnet协议的TCP回显客户端。我还处于早期阶段,正在尝试编写读写函数。
我想使用I/O多路复用和Select函数来编写它,因为它需要支持多客户端,而我不想在学习Berkeley套接字库的同时尝试学习C++线程。在I/O多路复用章节的结尾,Stevens有一个关于DOS攻击的小节,他说我计划使用的方法容易受到仅发送一个字节并挂起的DOS攻击。之后,他提到了三种可能的解决方案:非阻塞IO、线程(退出)和在I/O操作上设置超时。
我的问题是,是否有其他避免这种攻击的方法?如果没有,哪种方法最好?我浏览了一下关于在操作上设置超时的章节,但看起来不像我想要的东西。他建议的做法看起来相当复杂,我不确定如何将它们融入到我已经拥有的内容中。我只是浏览了一下NIO章节,它看起来是现在应该采取的方式,但我想看看是否有其他方法可以避免这种情况,然后再花费几个小时浏览该章节。
有什么想法吗?