Are you running the socket on the phone hosting the hotspot, or on a client connected to it? The distinction matters here.
A NetworkInterface is an OS interface; it is not itself an android.net.Network that you can pass to Network.bindSocket(). Finding the hotspot interface in NetworkInterface.getNetworkInterfaces() therefore does not supply the missing Network object.
If this is a UDP server on the hosting phone, first test ordinary unicast traffic from a connected client. You can bind a DatagramSocket to a local address and port using InetSocketAddress; that is different from binding the socket to an Android Network. Use an address actually assigned to the hotspot interface, rather than assuming an interface name or a fixed IP. Local-address binding is not a general replacement for Android network selection, so confirm packet delivery on the affected device.
If this is the client, use the Wi-Fi Network delivered through the appropriate connectivity callback, and bind the socket before connecting it.
Could you share your Android version, which side runs this code, and whether the traffic is unicast, broadcast, or multicast? Those cases need different handling.
References: local-only hotspots, DatagramSocket address binding, Network socket binding.