003
06.05.2003, 11:55 Uhr
virtual
Sexiest Bit alive (Operator)
|
In der Regel muß man unterscheiden zwischen Blocking und Non-Blocking IO. Wenn Du mit einem blocking Socket arbeitest (solange du nicht explizit was machst, ist es blocking), dann blockt das read/write solange, bis du die gewünschten bytes hast oder eines der an der Übetragung beteiligten Sockets sein Dasein beendet.
Bei non-blöocking kann es vorkommen, daß du bei großen Datenmengen eine Bufferoverflow bekommst (errno wird dann EAGAIN). Da empfehlen sich also kleinere Portionen und ggf. ein select(2), um rauszubekommen, ob man denn mit dem Socket grade was anfangen kann.
Letztlich aber werden die Daten, die du verschickst, von darunterliegenden Layern gesplittet. Du bekommst die max Paketgröße raus, indem du mal ein ifconfig auf den Netzwerkadaptor machst, über den du sendest. Die MTU/MRU ist da in der regel 1500, wobei du für IP und TCP header noch mal 44 Bytes (glaube ich) abziehen kannst. -- Gruß, virtual Quote of the Month Ich eß' nur was ein Gesicht hat (Creme 21) |