1516, haha, are you writing a RTMP handshake? The io.Reader is not promise always get the size data, you can use io.CopyN or ReadBuffer. For io.Writer of netFD, it always write all the data.
On Saturday, May 20, 2017 at 11:01:44 PM UTC+8, fusi.enr...@gmail.com wrote: > > Hello All > > first I apologize for my English, I'm not a native speaker. > I have a question about how golang reads the sockets in tcp. > > Imagine I send , using a conn.Write(buffer), a buffer which has the > (unpredictable) size from 80 Bytes to 1516. > > Now, if I do something like this (after creating "ln"): > > for { >> message := make([]byte, 1516) >> var err error >> // accept connection on port >> conn, _ := ln.Accept() >> mytimeout := 1000 >> mytimeout, _ = strconv.Atoi(cf.GConfig["TimeOut"]) >> Gtimeout := time.Duration(mytimeout) * time.Millisecond >> conn.SetReadDeadline(time.Now().Add(Gtimeout)) >> >> _, err = conn.Read(message) >> if err != nil { >> conn.Close() >> continue >> } > > *messageinterpreter(message) // just do something with message* > > } > > > what I am afraid is that , when the client is sending i.e 100 chars using > conn.Write(100chars) , the conn.Read will not understand the size, and not > stop until it has read 1516 bytes > > What is the expected behavior in such a case? I cannot serialize this > content (which is binary) because I fear the impact of overhead. > > > thanks in advance for any comment. > > EFM > > > > > > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.