Anyone can share? :) Thanks On Mon, Oct 15, 2012 at 11:50 AM, Randi Botse <nightdecoder@xxxxxxxxx> wrote: > Hi All > > When using TCP socket, I loop send() or recv() until ALL the data has > been transmitted (or error, disconnect, etc.), because TCP socket > packet is transmitted in stream nature, maybe a byte, bytes or all > bytes in one transfer. > > The UDP socket preserve message boundary which TCP socket doesn't. > Does this means single call to sendto() will processed by single call > recvfrom()?, and how about packet that exceeds UDP data MAX size?. > > So in code, do I need to loop sendto() or recvfrom() to transmit the data?. > > Example codes is: > > char packet[100]; > size_t nbytes = 0; > int ret; > > while (nbytes < sizeof(packet)) { > ret = recvfrom(socket, packet + nbytes, addr, 0, sizeof(packet) - nbytes); > if (ret <= 0) { > /* deal with recvfrom() error */ > } > nbytes += ret > } > > > Thanks -- To unsubscribe from this list: send the line "unsubscribe linux-c-programming" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html