new file mode 100644
--- /dev/null
+++ b/PacketReader.cpp
@@ -0,0 +1,63 @@
+/*
+ * $Id: PacketReader.cpp 54 2008-01-10 00:24:52Z mbroeker $
+ * $URL: http://localhost/svn/cpp/qMonitor/trunk/PacketReader.cpp $
+ */
+
+#include <PacketReader.h>
+
+PacketReader::PacketReader (int tm)
+{
+ timeout = tm;
+
+ if ((p_socket = socket (PF_PACKET, SOCK_RAW, htons (ETH_P_ALL))) == -1) {
+ perror ("SocketException");
+ throw std::runtime_error ("SocketException: root access required");
+ }
+}
+
+PacketReader::PacketReader (std::string filename)
+{
+ if ((p_socket = open (filename.c_str (), O_RDONLY)) == -1) {
+ throw std::runtime_error ("FileException");
+ }
+
+ timeout = -1;
+}
+
+PacketReader::~PacketReader ()
+{
+ close (p_socket);
+}
+
+std::string PacketReader::read ()
+{
+ static char s[IP_MAXPACKET + 1];
+ int c;
+
+ c =::read (p_socket, s, IP_MAXPACKET);
+ s[c] = 0;
+ return std::string (s, c);
+}
+
+bool PacketReader::ready ()
+{
+ if (p_socket)
+ return true;
+
+ return false;
+}
+
+bool PacketReader::dataAvailable ()
+{
+ pollfd fdin;
+ int event = 1;
+
+ fdin.fd = p_socket;
+ fdin.events = POLLIN;
+ fdin.revents = 0;
+
+ if (poll (&fdin, event, timeout) > 0)
+ return true;
+
+ return false;
+}