Thread (11 messages) 11 messages, 3 authors, 2011-10-21

Problem with a UDP server implements

From: tao jiang <hidden>
Date: 2011-10-17 23:26:35

Bernd:

Is it to create a SOCK_RAW socket for receieve and send?
Then is it means I have to parse the IP header and options if any?
Will it cause performance problem, compare to SOCK_DGRAM?

Thanks.


2011/10/15 Bernd Petrovitsch [off-list ref]:
On Sam, 2011-10-15 at 01:51 +0800, jiangtao.jit wrote:
quoted
Hi:

I'm writing a UDP server and meet a problem
the UDP server program is run on a box with single card but has multi ip:
like ? ?eth0 ? ? ? ?10.0.0.1
? ? ? ? eth0:1 ? ? 10.0.0.2
? ? ? ? ? ? ? eth0:2 ? ? ? ? ?11.0.0.1

I bind the server socket with INADDR_ANY

when a client send a packet to 10.0.0.2(the eth0:1 's ip)
the server can recieve the packet and reply, but the client can't recieve the server's response
I use wireshark to capture the response packet
and found that the server use 10.0.0.1(the eth0 's ip) as saddr in the response packet
I expected it to be 10.0.0.2 but it's not
my question : is there any way to let the UDP server relpy just use the ip it receieved the request ?
It's :
when a client send a request to 10.0.0.1(eth0); the server use 10.0.0.1 to response
and another client send a request to 10.0.0.2(eth0:1); the server use 10.0.0.2 to response
You can always build the complete raw packet (including the IP header)
yourself.

? ? ? ?Bernd
--
Bernd Petrovitsch ? ? ? ? ? ? ? ? ?Email : bernd at petrovitsch.priv.at
? ? ? ? ? ? ? ? ? ? LUGA : http://www.luga.at
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help