일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 리뷰
- C
- tcp
- 책
- go언어
- channel
- json
- mutex
- Golang
- package
- Linux
- c++
- 영화
- http
- range
- JavaScript
- Sync
- FOR
- window
- install
- GO 언어
- Python
- bitcoin
- windows
- go
- API
- File
- Callback
- Close
- write
- Today
- Total
목록Close (5)
Code Habit
- HTTP 인터넷으로 데이터를 주고 받는 일종의 규약으로 주로 HTML 문서를 주고 받는 데에 쓰인다. 요청/응답 프로토콜로 서버는 클라이언트의 요청에 대한 응답을 처리하지만 연결을 유지하지는 않는다. TCP를 사용하고 80번 포트를 사용한다. - WebSocket WebSocket은 HTTP 통신과 다르게 한번 연결을 하면 연결을 유지하는 특징을 지닌다. 하여 서버는 단순 요청에 대한 응답만 제공하는 것이 아니라 필요하면 직접 연결된 클라이언트와 통신할 수 있다. 클라이언트 구분이 가능하며 실시간 양방향 통신에 사용할 수 있다. - WebSocket 설치 npm i ws - WebSocket 사용 : server.js const WebSocket = require('ws'); const ws = ne..
함수 종료 전에 처리 해야 하는 코드가 있을 때 defer를 사용하면 된다. 파일핸들 반환 등에 사용하면 자칫 OS자원 사용 후 반환하지 않는 실수를 줄일 수 있다. func main() { f, err := os.Create("test.txt") if err != nil { fmt.Println("Failed to create file") return } defer fmt.Println("defer 1 !") defer fmt.Println("defer 2 !") defer f.Close() // main() 함수 종료 직전에 실행하여 파일 핸들 반환한다. defer fmt.Println("defer 3 !") } // 출력 순서 defer 3 ! // f.close() 실행 defer 2 ! defe..
for 반복문에서 range 키워드를 이용하여 배열/슬라이스 요소를 순회할 수 있다. func main() { var t []int = [5]int{1, 2, 3, 4, 5} for i, v = range t {// i : index( 0 ~ 4 ), v : value( 1 ~ 5 ) fmt.Println(i, v) } } for range 구문을 사용하여 채널에서 데이터를 계속 기다릴 수 있다. func main() { var wg sync.WaitGroup wg.Add(1) ch := make(chan int) go func() { defer wg.Done() for n := range ch { // ch에 값이 들어올때까지 대기, 채널을 닫으면 (close(ch)) for 구문을 빠져나온다. fmt..
golang에서 "net" 패키지에서 TCP 프로토콜을 제공한다. 간단히 TCP 프로토콜 에코서버와 클라이언트를 만들어 보겠다. 서버 예제 // main.go package main import ( "fmt" "io" "net" ) func handler(conn net.Conn) { recv := make([]byte, 4096) for { n, err := conn.Read(recv) if err != nil { if err == io.EOF { fmt.Println("connection is closed from client : ", conn.RemoteAddr().String()) } fmt.Println("Failed to receive data : ", err) break } if n > 0 ..
golang에서 os 패키지를 사용해 파일 Read/Write를 편하게 할 수 있다. 다음은 사용되는 함수이다. func OpenFile(name string, flag int, perm FileMode)(file *File, err error) : 파일 플래그, 파일 모드를 지정하여 파일 열기 func (f* File) Close() error : 파일을 닫음 func (f* File) Write(b []byte) (n int, err error) : 파일에 값을 씀. 쓴 데이터의 길이와 에러 값 리턴 func (f* File) Read() (b []byte)(n int, err error) : 파일의 내용을 읽음. byte형식으로 기록되며 읽은 Count와 에러 값 리턴 사용 예제 // main.go..