func (sock *TunnelSocket) Inbound() <-chan Service {
	return sock.inbound
}
Inbound provides a channel from which you can retrieve incoming packets.
package knxnet
import (
	"net"
	"time"
	"github.com/vapourismo/knx-go/knx/util"
)
type Socket interface {
	Send(payload ServicePackable) error
	Inbound() <-chan Service
	Close() error
	LocalAddr() (*net.UDPAddr, error)
}
type TunnelSocket struct {
	conn    *net.UDPConn
	inbound <-chan Service
}
func DialTunnel(address string) (*TunnelSocket, error) {
	addr, err := net.ResolveUDPAddr("udp4", address)
	if err != nil {
		return nil, err
	}
	conn, err := net.DialUDP("udp4", nil, addr)
	if err != nil {
		return nil, err
	}
	conn.SetDeadline(time.Time{})
	inbound := make(chan Service)
	go serveUDPSocket(conn, addr, inbound)
	return &TunnelSocket{conn, inbound}, nil
}
func (sock *TunnelSocket) Send(payload ServicePackable) error {
	buffer := make([]byte, Size(payload))
	Pack(buffer, payload)
	_, err := sock.conn.Write(buffer)
	return err
}