sysGetsock_windows.go 942 B

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