Skip to content

Commit b16ec24

Browse files
committed
127.0.0.1 주소에서 랜덤 포트에 수신 대기 중인 리스너 생성
1 parent 9510d17 commit b16ec24

File tree

2 files changed

+65
-0
lines changed

2 files changed

+65
-0
lines changed

README.md

+21
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,24 @@
1313
`go clean main.go`
1414

1515
- cleaning object and cache
16+
17+
## string formatt
18+
19+
- %v : 구조체의 값을 출력한다.
20+
- %+ek. : 구조체의 필드이름과 값을 출력한다.
21+
- %#g : 호출된 함수이름과 구조체의 이름 같은 소스코드 정보까지 함께 출력한다.
22+
- %T : 타입을 출력한다.
23+
- %t : 불리언의 값을 true 혹은 false 문자열로 출력한다.
24+
- %d : Integer 값을 출력하기 위해서 사용한다. 10자리 크기의 정수를 포함한 문자열 형식을 가진다.
25+
- %b : 이진(바이너리)값을 출력한다.
26+
- %c : 정수에 해당하는 문자를 출력한다.
27+
- %x : Hex 인코딩 값을 출력한다.
28+
- %f : 부동 소숫 점 값을 출력한다.
29+
- %e : 과학적 표기법으로 출력한다.
30+
- %E : 과학적 표기법으로 출력한다. %e와 다른점은 e가 대문자인지 소문자인지
31+
- %s : 문자열을 출력할 때 사용한다. %d와 더불어 가장 많이 사용하는 옵션
32+
- %q : 문자열에 있는 쌍다움표를 그대로 출력한다.
33+
- %x : 먼저 값을 integer로 변환한 다음 16비트 문자열로 변환해서 출력한다.
34+
- %p : 포인터의 주소 값을 출력한다.
35+
- %nd : 포맷팅에 사용하는 숫자 n을 이용해서 출력 할 넓이를 설정할 수 있다. %6d인 경우 6칸의 넓이를 가진다. 채우지 못한 곳은 왼쪽 부터 스페이스 문자로 채워진다.
36+
- %-nd : %nd와 달리 왼쪽부터 데이터가 채워지고 나머지 공간을 스페이스 문자가 채운다.

monolib/listen.go

+44
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
// 127.0.0.1 주소에서 랜덤 포트에 수신 대기 중인 리스너 생성
2+
package monolib
3+
4+
import (
5+
"net"
6+
"testing"
7+
)
8+
9+
func TestListen(t *testing.T) {
10+
// listener 와 err 를 리턴 받습니다.
11+
// listener 는 net.Listener 인터페이스를 구현한 객체입니다.
12+
// err 는 error 인터페이스를 구현한 객체입니다.
13+
// net.Listen 은 net 패키지의 Listen 함수를 호출합니다.
14+
// Listen 함수는 "tcp" 네트워크 프로토콜을 사용합니다.
15+
// 포트를 표기하거나 0으로 하면 무작위 포트를 사용합니다.
16+
17+
// := 는 변수 선언과 초기화를 동시에 합니다.
18+
// := 는 변수를 선언하고 초기화하는 것이기 때문에
19+
// 변수를 선언하고 초기화하는 것이 아니라면 := 를 사용할 수 없습니다.
20+
// := 는 함수 내에서만 사용할 수 있습니다.
21+
22+
listener, err := net.Listen("tcp", "127.0.0.1:0")
23+
24+
// 에러가 발생하면 테스트를 실패합니다.
25+
// 에러가 발생하지 않으면 테스트를 성공합니다.
26+
if err != nil {
27+
t.Fatal(err)
28+
}
29+
30+
// defer 는 함수가 종료되기 직전에 실행됩니다.
31+
// defer 은 역순으로 진행됩니다.
32+
// defer 는 함수 내에서만 사용할 수 있습니다.
33+
// defer 는 함수가 종료되기 직전에 실행되기 때문에
34+
// 리소스를 해제하는 용도로 사용합니다.
35+
// 명시적으로 리소스를 해제하지 않는다면 메모리 누수가 발생하거나
36+
// Accept 메서드가 무한정 블로킹되는 데드락이 발생할 수 있습니다.
37+
38+
// _ 는 무시할 값을 의미합니다.
39+
defer func() { _ = listener.Close() }()
40+
41+
// listener.Addr()의 반환값은
42+
// %q 는 쌍따옴표로 묶인 문자열을 표시합니다.
43+
t.Logf("bound to %q", listener.Addr())
44+
}

0 commit comments

Comments
 (0)