add local endpoint

This commit is contained in:
Luke Pulverenti 2015-05-11 22:40:26 -04:00
parent aae30eda52
commit fc7ed4d3fb
2 changed files with 17 additions and 7 deletions

View File

@ -30,7 +30,7 @@ namespace MediaBrowser.Dlna.Ssdp
{ {
var msg = Encoding.ASCII.GetBytes(Message); var msg = Encoding.ASCII.GetBytes(Message);
var socket = CreateSocket(); var socket = CreateSocket(!IgnoreBindFailure);
if (socket == null) if (socket == null)
{ {
@ -102,13 +102,20 @@ namespace MediaBrowser.Dlna.Ssdp
} }
} }
private Socket CreateSocket() private Socket CreateSocket(bool isBroadcast)
{ {
try try
{ {
var socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); var socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true); socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
if (isBroadcast)
{
socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, true);
socket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastTimeToLive, 4);
}
return socket; return socket;
} }
catch (Exception ex) catch (Exception ex)

View File

@ -87,11 +87,14 @@ namespace MediaBrowser.Dlna.Ssdp
try try
{ {
var ip = _appHost.LocalIpAddress; if (e.LocalEndPoint == null)
{
if (!string.IsNullOrWhiteSpace(ip)) var ip = _appHost.LocalIpAddress;
e.LocalEndPoint = new IPEndPoint(IPAddress.Parse(ip), 0);
}
if (e.LocalEndPoint != null)
{ {
e.LocalIp = IPAddress.Parse(ip);
TryCreateDevice(e); TryCreateDevice(e);
} }
} }
@ -140,7 +143,7 @@ namespace MediaBrowser.Dlna.Ssdp
{ {
var args = SsdpHelper.ParseSsdpResponse(receiveBuffer); var args = SsdpHelper.ParseSsdpResponse(receiveBuffer);
args.EndPoint = endPoint; args.EndPoint = endPoint;
args.LocalIp = localIp; args.LocalEndPoint = new IPEndPoint(localIp, 0);
if (!_ssdpHandler.IsSelfNotification(args)) if (!_ssdpHandler.IsSelfNotification(args))
{ {