Skip to content

Commit 50df68d

Browse files
committed
tcp read
1 parent c5c4ce8 commit 50df68d

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed

monolib/read.go

+51
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
// TCP 로 데이터가 올때마다 버퍼 크기 만큼 읽어서 처리한다.
2+
package monolib
3+
4+
import (
5+
"crypto/rand"
6+
"fmt"
7+
"net"
8+
)
9+
10+
func ReadIntoBuffer(){
11+
payload := make([]byte, 1<<24) // 16MB
12+
_, err := rand.Read(payload) // 랜덤한 데이터를 payload 에 채운다.
13+
if err != nil {
14+
panic(err)
15+
}
16+
17+
listener, err := net.Listen("tcp", ":8080")
18+
if err != nil {
19+
panic(err)
20+
}
21+
22+
go func() {
23+
conn, err := listener.Accept()
24+
if err != nil {
25+
panic(err)
26+
}
27+
defer conn.Close()
28+
29+
_, err = conn.Write(payload)
30+
if err != nil {
31+
panic(err)
32+
}
33+
}()
34+
35+
conn, err := net.Dial("tcp", ":8080")
36+
if err != nil {
37+
panic(err)
38+
}
39+
// 데이터가 올때 마다 버퍼 크기 만큼 읽어서 처리한다.
40+
41+
buf := make([]byte, 1<<19) // 512KB
42+
43+
for {
44+
n, err := conn.Read(buf)
45+
if err != nil {
46+
panic(err)
47+
}
48+
49+
fmt.Printf("Read %d bytes from the connection into the buffer \r", n)
50+
}
51+
}

0 commit comments

Comments
 (0)