이것은 더 기본적인 기본 관용구 문제이지만 좋은 예가됩니다. (BTW 100 % newb)유닉스 소켓 수신기를 만드는 방법
유닉스 소켓을 듣고 메시지를 처리하려고합니다. 다양한 장소에서 코드를 도난하지만 난 '캐스트'일 잘
package main
import "fmt"
import "net"
func main(){
ln,err := net.Listen("unix", "/var/service/daemon2")
if err!= nil {
fmt.Println(err)
return
}
for {
c, err := ln.Accept()
if err != nil {
fmt.Println(err)
continue
}
// handle the connection
go handleServerConnection(c)
}
}
func handleServerConnection(c net.UnixConn) {
// receive the message
buff := make([]byte, 1024)
oob := make([]byte, 1024)
_,_,_,_,err:=c.ReadMsgUnix(buff,oob);
if err != nil {
fmt.Println(err)
}
}
내가 ReadUNixMsg를 호출 할 수 있도록 형식 UNixConn의 수 handleServerConnection 내부에 'C'를 필요로 기운 다. 그러나 일반 리스닝 코드는 일반 Conn 객체를 만듭니다. 그래서이 코드는 컴파일되지 않습니다.
예를 들어 UnixConn (c)과 같이 다양한 변환/캐스트 유형의 것들을 시도했지만 모두 유용하지 않았습니다.
ty - 첫 번째 줄의 의미를 설명 할 수 있습니까? – pm100
@ pm100 몇 가지 설명을 추가했지만, 기본적으로 인터페이스를 Go에서 구현하는 실제 유형으로 변환하는 방법입니다. –