I'm looking to find a way to receive a UDP packet via interrupts vs. some form of polling in C.  I am trying to minimize CPU resources as much as possible.  Thanks!

Posted on 2009-04-04
Last Modified: 2013-11-29
I'm looking to find a way to receive a UDP packet via interrupts vs. some form of polling in C.  I am trying to minimize CPU resources as much as possible.  Thanks!
Question by:rounders1086
1 Comment
LVL 40

Accepted Solution

mrjoltcola earned 500 total points
ID: 24068148
1) select() with reasonable timeout value is a great, simple way to poll while not blocking indefinitely. select() for 100 milliseconds at a time lets your loop process 10 times a second if needed. If a packet arrives, the select will return immediately without waiting for 100ms.

2) A thread that just issues a blocking read()/recvfrom() is probably as cpu minimal as you can get.

Are you only interested in processes the packet, or are there other tasks that must be carried out in parallel? If so, either option above will work, but if you want to completely decouple the tasking so a long-running background task does not block the network messaging, go with a thread.

There are a few other ways, like async io receiving SIGIO to your process, then you still have to call select() to find which descriptor is ready. I prefer alternatives above to that.

If these aren't satisfactory there are other ways, including Linux non-portable ways.

Featured Post

Windows Server 2016: All you need to know

Learn about Hyper-V features that increase functionality and usability of Microsoft Windows Server 2016. Also, throughout this eBook, you’ll find some basic PowerShell examples that will help you leverage the scripts in your environments!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Unix / Linux grid computing 5 146
improve Shell script 5 142
assigning port numbers to web sites and web services 2 70
VOIP: SIP vs. proprietary Broadview Networks Silnet ?? 12 94
Have you thought about creating an iPhone application (app), but didn't even know where to get started? Here's how: ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ Important pre-programming comments: I’ve never tri…
We recently endured a series of broadcast storms that caused our ISP to shut us down for brief periods of time. After going through a multitude of tests, we determined that the issue was related to Intel NIC drivers on some new HP desktop computers …
The goal of this video is to provide viewers with basic examples to understand and use pointers in the C programming language.
After creating this article (, I decided to make a video (no audio) to show you how to configure the routers and run some trace routes and pings between the 7 sites…

912 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

23 Experts available now in Live!

Get 1:1 Help Now