TCP 소켓의 HTTP 서버(Go에서)
문제:
HTTP 생성 사용자 정의 TCP 소켓을 사용하는 특정 VRF 인터페이스의 서버에서 "accept tcp 127.0.0.1:80: accept:잘못된 인수"라는 오류가 발생합니다.
해결책:
net.ListenConfig를 사용한 소켓 옵션 삽입:
이 문제를 해결하려면 syscall.Bind를 호출하기 전에 net.ListenConfig를 사용하여 원하는 소켓 옵션을 삽입하세요. 이렇게 하면 넷 패키지의 사양에 따라 소켓 설정이 수행됩니다.
단계:
코드 샘플:
<code class="go">func main() { lc := net.ListenConfig{Control: controlOnConnSetup} ln, err := lc.Listen(context.Background(), "tcp", "127.0.0.1:80") if err != nil { log.Fatal(err) } ln.Close() } func controlOnConnSetup(network string, address string, c syscall.RawConn) error { var operr error fn := func(fd uintptr) { operr = syscall.SetsockoptString(int(fd), syscall.SOL_SOCKET, syscall.SO_BINDTODEVICE, "vrfiface") } if err := c.Control(fn); err != nil { return err } if operr != nil { return operr } return nil }</code>
이 접근 방식을 사용하면 소켓을 IP 주소 및 포트에 바인딩하기 전에 사용자 정의 소켓 옵션을 추가할 수 있어 소켓 생성 시 발생하는 문제를 해결할 수 있습니다. 특정 VRF 인터페이스의 HTTP 서버.
위 내용은 Go에서 사용자 정의 TCP 소켓에 HTTP 서버를 생성할 때 \'잘못된 인수\' 오류를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!