func (conn *UnixConn) SendTo(addr net.Addr, p Packet) error {
	_, err := conn.WriteTo(p.Bytes(), addr)
	return err
}
SendTo sends a Packet to the provided net.Addr.
package osc
import (
	"context"
	"net"
	"os"
	"path/filepath"
	ulid "github.com/imdario/go-ulid"
	"github.com/pkg/errors"
)
type unixConn interface {
	net.Conn
	netWriter
	ReadFromUnix([]byte) (int, *net.UnixAddr, error)
}
type UnixConn struct {
	unixConn
	closeChan  chan struct{}
	ctx        context.Context
	errChan    chan error
	exactMatch bool
}
func DialUnix(network string, laddr, raddr *net.UnixAddr) (*UnixConn, error) {
	return DialUnixContext(context.Background(), network, laddr, raddr)
}
func DialUnixContext(ctx context.Context, network string, laddr, raddr *net.UnixAddr) (*UnixConn, error) {
	conn, err := net.DialUnix(network, laddr, raddr)
	if err != nil {
		return nil, err
	}
	uc := &UnixConn{
		unixConn:  conn,
		closeChan: make(chan struct{}),
		ctx:       ctx,
		errChan:   make(chan error),
	}
	return uc.initialize()
}
func ListenUnix(network string, laddr *net.UnixAddr) (*UnixConn, error) {
	return ListenUnixContext(context.Background(), network, laddr)
}
func ListenUnixContext(ctx context.Context, network string, laddr *net.UnixAddr) (*UnixConn, error) {
	conn, err := net.ListenUnixgram(network, laddr)
	if err != nil {
		return nil, err
	}
	uc := &UnixConn{
		unixConn:  conn,
		closeChan: make(chan struct{}),
		ctx:       ctx,
		errChan:   make(chan error),
	}
	return uc.initialize()
}
func (conn *UnixConn) Close() error {
	close(conn.closeChan)
	return conn.unixConn.Close()
}
func (conn *UnixConn) CloseChan() <-chan struct{} {
	return conn.closeChan
}
func (conn *UnixConn) Context() context.Context {
	return conn.ctx
}
func (conn *UnixConn) initialize() (*UnixConn, error) {
	if err := conn.unixConn.SetWriteBuffer(bufSize); err != nil {
		return nil, errors.Wrap(err, "setting write buffer size")
	}
	return conn, nil
}
func (conn *UnixConn) read(data []byte) (int, net.Addr, error) {
	return conn.ReadFromUnix(data)
}
func (conn *UnixConn) Send(p Packet) error {
	_, err := conn.Write(p.Bytes())
	return err
}