Skip to content

Commit 7557bce

Browse files
committed
module 화 시켜서 서버 킴
1 parent b16ec24 commit 7557bce

File tree

3 files changed

+36
-5
lines changed

3 files changed

+36
-5
lines changed

go.mod

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
module module
2+
3+
go 1.19

main.go

+8-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,14 @@
11
package main
22

3-
import "fmt"
3+
import (
4+
"fmt"
5+
"module/monolib"
6+
)
47

58
func main(){
69
fmt.Println("Hello World")
10+
err := monolib.TestListen()
11+
if err != nil {
12+
fmt.Println(err)
13+
}
714
}

monolib/listen.go

+25-4
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ package monolib
33

44
import (
55
"net"
6-
"testing"
6+
"fmt"
77
)
88

9-
func TestListen(t *testing.T) {
9+
func TestListen() error {
1010
// listener 와 err 를 리턴 받습니다.
1111
// listener 는 net.Listener 인터페이스를 구현한 객체입니다.
1212
// err 는 error 인터페이스를 구현한 객체입니다.
@@ -24,7 +24,7 @@ func TestListen(t *testing.T) {
2424
// 에러가 발생하면 테스트를 실패합니다.
2525
// 에러가 발생하지 않으면 테스트를 성공합니다.
2626
if err != nil {
27-
t.Fatal(err)
27+
fmt.Println("Error: ", err)
2828
}
2929

3030
// defer 는 함수가 종료되기 직전에 실행됩니다.
@@ -40,5 +40,26 @@ func TestListen(t *testing.T) {
4040

4141
// listener.Addr()의 반환값은
4242
// %q 는 쌍따옴표로 묶인 문자열을 표시합니다.
43-
t.Logf("bound to %q", listener.Addr())
43+
fmt.Println("bound to", listener.Addr())
44+
45+
// for 루프는 무한 루프입니다.
46+
47+
// Accept 메서드는 리스너가 수신 대기 중인 연결을 반환합니다.
48+
// Accept 메서드는 블로킹 메서드입니다.
49+
// Accept 메서드는 블로킹 메서드이기 때문에
50+
// 리스너가 수신 대기 중인 연결이 없으면 무한정 블로킹됩니다.
51+
for {
52+
conn, err := listener.Accept()
53+
if err != nil {
54+
return err
55+
}
56+
57+
// go 는 고루틴을 생성합니다.
58+
// 고루틴은 경량스레드 입니다.
59+
go func (c net.Conn) {
60+
defer c.Close()
61+
_, _ = c.Write([]byte("Hello World"))
62+
63+
}(conn)
64+
}
4465
}

0 commit comments

Comments
 (0)