연결에서 정보 스트림을 읽으려고합니다. 나는 그것의 서버 부분을 작성하지 않았고, 프로토콜을 수정하는 것에 대한 액세스 권한이 없다. (그렇지 않으면 프로토콜을 훨씬 더 친숙하게 만들었을 것이다.)임의의 양의 버퍼를 Golang 버퍼에 읽어들입니다.
Go에 서비스를 작성하려고하는데 루프에서 버퍼에 바이트의 임의의 수와 다른 핸들러에 떨어져에 전달이 내 현재 설정
buf := make([]byte, 256)
for {
n, err := conn.Read(buf)
fmt.Println(string(buf))
if err != nil || n== 0 {
return
}
Handle(buf[:n])
}
입니다
을 (나는 또한이 부분을 수정할 수 없습니다) 충분히 바이트가있을 때 잘 작동 read ... 그러나 스트림의 끝에는 읽을 수있는 256 바이트가 없습니다. Read()가 정상적으로 복귀하는 동안 256 바이트 버퍼를 보존 할 수있는 방법이 있습니까? 당신이 사용할 수있는 연결의 전체 흐름을 읽고 싶다면
이해가 아니에요. "우아한 반환"이란 무엇입니까? Is Handle 함수는 256 길이의 바이트 만 사용합니까? – chendesheng
당신은'EOF'를 제대로 다루지 않습니다 - [io.Reader] (http://golang.org/pkg/io/#Reader) 문서를보세요 -'EOF'는'n! = 0 '. 이것이 당신의 문제인지 아닌지 확실하지 않습니다! –