Created
October 18, 2018 23:51
-
-
Save eiyaya/152e76061f0ca0898a541f046f88dd54 to your computer and use it in GitHub Desktop.
read from tcp conn
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
buff := make([]byte, 1024) | |
c := bufio.NewReader(conn) | |
for { | |
// read a single byte which contains the message length | |
size, err := c.ReadByte() | |
if err != nil { | |
return err | |
} | |
// read the full message, or return an error | |
_, err := io.ReadFull(c, buff[:int(size)]) | |
if err != nil { | |
return err | |
} | |
fmt.Printf("received %x\n", buff[:int(size)]) | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Sender | |
// create the length prefix | |
prefix := make([]byte, 4) | |
binary.BigEndian.PutUint32(prefix, uint32(len(message))) | |
// write the prefix and the data to the stream (checking errors) | |
_, err := conn.Write(prefix) | |
_, err = conn.Write(message) | |
// Reader | |
// read the length prefix | |
prefix := make([]byte, 4) | |
_, err = io.ReadFull(conn, prefix) | |
length := binary.BigEndian.Uint32(prefix) | |
// verify length if there are restrictions | |
message = make([]byte, int(length)) | |
_, err = io.ReadFull(conn, message) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment