1// +build windows 2 3package dns 4 5import "net" 6 7type SessionUDP struct { 8 raddr *net.UDPAddr 9} 10 11// ReadFromSessionUDP acts just like net.UDPConn.ReadFrom(), but returns a session object instead of a 12// net.UDPAddr. 13func ReadFromSessionUDP(conn *net.UDPConn, b []byte) (int, *SessionUDP, error) { 14 n, raddr, err := conn.ReadFrom(b) 15 if err != nil { 16 return n, nil, err 17 } 18 session := &SessionUDP{raddr.(*net.UDPAddr)} 19 return n, session, err 20} 21 22// WriteToSessionUDP acts just like net.UDPConn.WritetTo(), but uses a *SessionUDP instead of a net.Addr. 23func WriteToSessionUDP(conn *net.UDPConn, b []byte, session *SessionUDP) (int, error) { 24 n, err := conn.WriteTo(b, session.raddr) 25 return n, err 26} 27 28func (s *SessionUDP) RemoteAddr() net.Addr { return s.raddr } 29 30// setUDPSocketOptions sets the UDP socket options. 31// This function is implemented on a per platform basis. See udp_*.go for more details 32func setUDPSocketOptions(conn *net.UDPConn) error { 33 return nil 34} 35