sysGetsock_windows.go 754 B

12345678910111213141516171819202122232425262728293031323334353637
  1. // +build windows
  2. package mux
  3. import (
  4. "errors"
  5. "net"
  6. "os"
  7. )
  8. func sysGetSock(fd *os.File) (bufferSize int, err error) {
  9. // https://github.com/golang/sys/blob/master/windows/syscall_windows.go#L1184
  10. // not support, WTF???
  11. // return syscall.GetsockoptInt((syscall.Handle)(unsafe.Pointer(fd.Fd())), syscall.SOL_SOCKET, syscall.SO_RCVBUF)
  12. bufferSize = 10 * 1024 * 1024
  13. return
  14. }
  15. func getConnFd(c net.Conn) (fd *os.File, err error) {
  16. switch c.(type) {
  17. case *net.TCPConn:
  18. //fd, err = c.(*net.TCPConn).File()
  19. //if err != nil {
  20. // return
  21. //}
  22. return
  23. case *net.UDPConn:
  24. //fd, err = c.(*net.UDPConn).File()
  25. //if err != nil {
  26. // return
  27. //}
  28. return
  29. default:
  30. err = errors.New("mux:unknown conn type, only tcp or kcp")
  31. return
  32. }
  33. }