일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- tcp
- File
- JavaScript
- Callback
- Sync
- API
- window
- mutex
- windows
- range
- write
- FOR
- bitcoin
- go언어
- Linux
- 영화
- C
- c++
- Golang
- install
- 리뷰
- package
- channel
- http
- go
- 책
- GO 언어
- Close
- Python
- json
- Today
- Total
목록write (4)
Code Habit
앞에서 go를 이용한 TCP ehco 서버/클라이언트를 만들어 보았는데, 구현에 문제점이 있다고 지적하였었다. TCP 통신은 원래 데이터간의 경계가 존재 하지 않는다. 즉 네트워크나 PC 상황에 따라 데이터 전송이 밀려 자칫 데이터 전송이 의도치 않게 될수 있다는 것이다. 그래서 이를 보완하기 위해 본 데이터를 전송하기 전에 미리 전송되는 데이터의 size를 알려줘 데이터 전송에 오차가 없도록 할 수 있다. 참 다행히도 TCP 통신은 데이터의 무결성을 보장하기 때문에 전송하는 데이터가 중간에 유실될 염려는 하지 않아도 된다. 다음은 예제 코드이다. 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 func Co..
go를 이용하여 간단한 tcp echo 서버/클라이언트를 만들어 보겠다. server 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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 // main.go package main import ( "io" "log" "net" ) func main() { l, err := net.Listen("tcp", ":8000") if nil != err { log.Println(err) } defer l.Close() for { conn, err := l.Accept() if nil != err { ..
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..