- 论坛徽章:
- 0
|
学习了一段时间stevens的unix网络编程 卷1:套接字联网API(第三版)。在看到书中对“链路层访问”(第29章)的描述时,产生了如下的疑问:对数据链路层是否有并发的概念?如果有如何实现。
如果将以太网中一个机器通过libpcap设置到混杂模式来诊听其他机器的数据,然后此机器对所诊听的其他计算机的数据进行处理。那么应该可以将它类似看作为一个可以诊听其他机器数据的“server”吧。当sever连接的client个数大于一并且clients发送的数据时间没有限制,如果要加快处理数据的效率,那么应该使用并发server.
stevens的书上面只介绍了TCP和UDP的并发server,一般都是创建新线程或者创建新进程处理。如果要实现以太层面的并发,是不是也是通过pcap_open_live()得到descriptor,然后创建新进程,或者线程,再来处理。
但是通过对libpcap库的学习,发现pcap_dispatch()和pcap_next()函数,通过读man发现,它们都应该是从buffer读取,所以应该数据都先存储在了buffer里面。如果数据都要先通过buffer,并发很难实现吧
请大家指教,谢谢。 |
|