On May 27, 2013, at 7:26 AM, Asier Martínez <[email protected]> wrote:

> I'm trying to achieve a portable way of reading from multiple pcap devices in 
> non blocking.
> As far as I know, on Windows select() function it's nos usable with Winpcap 
> because there is no file descriptor for that purposes available into the 
> library, and this functionality must be implemented obtain a win32 HANDLE 
> with pcap_getevent() and wait on it with 
> WaitForSingleObject/MultipleObjects(Ex).

That's the correct way to do that on Windows.

> On the other hand, I read on release changelog on Winpcap.org:
> 
> Version 3.01 alpha 
>       • pcap_fileno returns a valid description also in case of a remote 
> capture, so that the'select()' function can be used to check if packets are 
> waiting to be read

WinPcap is a port of libpcap to Windows, and shares a lot of code with libpcap; 
the remote capture code can work on UN*X as well as on Windows.

That particular changelog item probably refers to the remote capture code on 
UN*X.

> ¿What is the most portable ( and correct ) approach to read from multiple 
> interfaces with winpcap ?

There isn't one.  There's one that works on UN*X (except when it doesn't, e.g. 
BPF only works with select() with newer versions of the various *BSDs and OS X, 
and in some OS versions, the workaround for that doesn't work), namely using 
select(), and and there's one that works on Windows, namely WaitFor....

> pcap_fileno returns a valid descriptor or not?

On Windows, it happens to return a HANDLE (assuming a HANDLE fits in an int), 
but it's not necessarily the HANDLE for something on which you can do a 
WaitFor....
_______________________________________________
Winpcap-users mailing list
[email protected]
https://www.winpcap.org/mailman/listinfo/winpcap-users

Reply via email to