hawkeye camera support(not tested)
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Net.NetworkInformation;
|
||||
using System.Net.Sockets;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
|
||||
namespace Inspectron.HawkEye.Protocol.Discovery
|
||||
{
|
||||
public class DiscoveryServer
|
||||
{
|
||||
private UdpClient _server;
|
||||
private byte[] _name;
|
||||
|
||||
public DiscoveryServer(int port,string name=null)
|
||||
{
|
||||
_server = new UdpClient(port);
|
||||
|
||||
if(name==null)
|
||||
{ _name = Encoding.UTF8.GetBytes( NetworkInterface
|
||||
.GetAllNetworkInterfaces()
|
||||
.Where(nic => nic.OperationalStatus == OperationalStatus.Up && nic.NetworkInterfaceType != NetworkInterfaceType.Loopback)
|
||||
.Select(nic => nic.GetPhysicalAddress().ToString())
|
||||
.FirstOrDefault());
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
_name = Encoding.UTF8.GetBytes(name);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void Start()
|
||||
{
|
||||
Thread th = new Thread(DiscoveryLoop);
|
||||
th.Start();
|
||||
}
|
||||
private void DiscoveryLoop()
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
var clientEp = new IPEndPoint(IPAddress.Any, 0);
|
||||
var clientRequestData = _server.Receive(ref clientEp);
|
||||
var clientRequest = Encoding.ASCII.GetString(clientRequestData);
|
||||
|
||||
Console.WriteLine("Recived {0} from {1}, sending response", clientRequest, clientEp.Address.ToString());
|
||||
_server.Send(_name, _name.Length, clientEp);
|
||||
_server.Send(_name, _name.Length, clientEp);
|
||||
_server.Send(_name, _name.Length, clientEp);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user