[Winpcap-users] sleep in pcap_next_ex api

Peter Lee peter.lee.cpp at gmail.com
Tue Jul 14 20:46:07 PDT 2009


Hi Prasanna Kumar Nelam,
Following links might be helpful:
http://www.winpcap.org/pipermail/winpcap-users/2006-September/001464.html
http://www.winpcap.org/pipermail/winpcap-users/2007-May/001858.html

Good luck

Peter

On Tue, Jul 14, 2009 at 8:27 PM, Prasanna Kumar
Nelam<prasannakumar.n at imimobile.com> wrote:
> Dear All,
>
>
>
> I am using pcap_next_ex() API to read the packets from Network. In my
> application I implemented 2 threads one for reading the packets from
> network, and other for process these packets.
>
> I am giving the code snippet, can u please suggest me whether it is correct
> or not.
>
>
>
> while(true)
>
> {
>
> while((res=pcap_next_ex(pcap.m_padhandle,&header,&pkt_data))>0)
>
>             {
>
>
> ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
>
> The lines below are used to copy the captured pkt into our local buffer
>
>
>
> packet_capture *packet=new packet_capture();
>
>
> packet->header=(pcap_pkthdr*)malloc(sizeof(pcap_pkthdr)+1);//header;
>
>
> memset((void*)packet->header,0,(sizeof(pcap_pkthdr)+1));
>
>                         memcpy(packet->header,header,sizeof(pcap_pkthdr));
>
>                         packet->pkt_data=(unsigned
> char*)malloc((int)header->caplen+1);
>
>
> memset((void*)packet->pkt_data,0,(int)header->caplen+1);
>
>
> memcpy((void*)packet->pkt_data,(void*)pkt_data,(int)header->caplen);
>
>
> ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
>
>
> ************************************************************************************************************************************
>
>                         The following lines are used to put the packet into
> queue, the packets from this C++queue are read by another thread
>
>  {
>
>                                     CAutoLock lock(g_syncpkt);
>
>                                     pkt_capture.push(packet);
>
>                                     printf("\n the queue size
> is:%d\n",pkt_capture.size());
>
>                         }
>
>
> ***************************************************************************************************************************************
>
>                         Sleep(1);
>
>             }
>
>             if(res==-1)
>
>             {
>
>                         printf("Error reading the packets: %s\n",
> pcap_geterr(pcap.m_padhandle));
>
>                         FILE *fp;
>
>                         fp=fopen("exceptionhandler.log","a");
>
>                         fprintf(fp,"%s-%s\n","Error reading the packets",
> pcap_geterr(pcap.m_padhandle));
>
>                         fclose(fp);
>
>
>
>             }
>
>             Sleep(1);
>
>
>
> }
>
>
>
> My doubt is it correct to write Sleep() at the
> while((res=pcap_next_ex(pcap.m_padhandle,&header,&pkt_data))>0) loop, by
> putting the sleep shall we loss any packet.
>
>
>
> Before intrducing the Sleep() in the code, I am getting delayed processing
> thread, and I am not able to process the packets immediately after
> capturing, because of that the virtual memory is increasing.
>
> Thanks in Advance for your advice.
>
>
>
>
>
>
>
> Thanks and Regds,
>
> Prasanna Kumar.N,
>
> Software Engineer,
>
> R&D Networks,
>
> Mob:9000086538
>
>
>
> =============================================
>
>
>
> This email and any files transmitted with it are confidential and intended
> solely for the use of the individual or entity to whom they are addressed.
> If you have received this email in error, please notify the sender
> immediately by e-mail and delete this e-mail from your system.  The sender
> therefore does not accept liability for any errors or omissions in the
> contents of this message, which arise as a result of e-mail transmission.
> Please note that any views or opinions presented in this email are solely
> those of the author and do not necessarily represent those of the company.
> Finally, the recipient should check this email and any attachments for the
> presence of viruses. The company accepts no liability for any damage caused
> by any attachment with this email.
>
> IMImobile, Plot No:770, Road No : 44, Jubilee Hills, Hyderabad, India,
> 500033. www.imimobile.com
> ==========================================================================================================================================================
> This e-mail message has been scanned for Viruses and Content and cleared by
> Symantec Mail Security
>
>
>
>
> _______________________________________________
> Winpcap-users mailing list
> Winpcap-users at winpcap.org
> https://www.winpcap.org/mailman/listinfo/winpcap-users
>
>


More information about the Winpcap-users mailing list