Re: write() udp socket
From: ZHOU Xiaobo <hidden>
Date: 2011-07-26 05:41:09
------------------
Sincerely yours
ZHOU Xiaobo
------------------ Original ------------------
From: "Huajun Li"<redacted>;
Date: Sun, Jul 24, 2011 04:33 PM
To: "ZHOU Xiaobo"<redacted>;
Cc: "netdev"<redacted>;
Subject: Re: write() udp socket
2011/7/23 ZHOU Xiaobo [off-list ref]:question No1: When I call ssize_t write(int fd, const void *buf, size_t count); on a nonblocking UDP socket, is the return value always equal to 'count'?
I don't think so. The function may be interrupt by signal or return due to other reason, so the return value only represents the size it writes successfully to the fd. UDP is datagram, so I think it guarantees the 'buffer' in 'write()' is entirely sent like an atomic operate.
question No2: Can I write() a UDP socket in multiple threads without locking?
In my opinion, you could. However, the receiver may not get what you expected. what will happen? I only concern whether the application 'buffer' is sent partially which is unacceptable.
thanks
------------------
Sincerely yours
ZHOU Xiaobo