If $f$ is a homomorphism of rings, we know the kernel of $f$ has to be an ideal of $\mathbb{Q}$, but as $\mathbb{Q}$ is a field, the only ideals of $\mathbb{Q}$ are $0$ and $\mathbb{Q}$ itself.

If $f: \mathbb Q\to \mathbb Q$ is a homomorphism, prove that $f(x)=0$ for all $x\in\mathbb Q$ or $f(x)=x$ for all $x$ in $\mathbb Q$.
Are there any libraries which put a reliability layer on top of UDP broadcast? 

I need to broadcast large amounts of data to a large number of machines as quickly as possible, and generally it seems like such a problem must have already been solved many times over, but I wasn't able to find anything except for the Spread toolkit, which has a somewhat viral license (you have to mention it in all materials advertising the end product, which I'm not sure our customer will be willing to do).

I was already going to write such a thing myself (because it would be extremely fun to do!) but decided to ask first.

I looked also at UDT (http://udt.sourceforge.net) but it does not seem to provide a broadcast operation.

PS I'm looking at something as lightweight as a library - no infrastructure changes.
