У нас есть этот код, чтобы узнать ip и mac устройства linux, которое запускает программное обеспечение через службу mdns (avahi), сгенерированную в untity3d с помощью вызова команды оболочки avahi-browse.
Itработает хорошо, но мы считаем, что, когда соединение теряется при публикации avahi (mdns) или напрямую, тратит много времени, не обнаруживая публикацию mdns.
У нас есть некоторый тип утечки памяти, из-за многихсгенерированные сокеты, так как приложение перестает подключаться и получать новый ip при его изменении из-за dhcp.
Могу ли я проверить, есть ли в этом коде проблема, которую мы не обнаруживаем?Спасибо
public static void GetIPAndPortThoughAvahi()
{
Debug.Log("MDNS Search for Server IP...");
//Avahi zeroconf, request ip service & port
System.Diagnostics.Process getIPAndPort = new System.Diagnostics.Process();
getIPAndPort.StartInfo.Arguments = "-d local " + avahiID + " --resolve -t -p";
getIPAndPort.StartInfo.FileName = "/usr/bin/avahi-browse";
getIPAndPort.StartInfo.RedirectStandardOutput = true;
getIPAndPort.StartInfo.CreateNoWindow = true;
getIPAndPort.StartInfo.UseShellExecute = false;
getIPAndPort.Start();
getIPAndPort.WaitForExit();
string output = getIPAndPort.StandardOutput.ReadToEnd();
string[] outputLines = output.Split('\n');
print("=========================" + output);
print(outputLines.Length);
bool any_found = false;
foreach (string s in outputLines)
{
print(s);
if (!string.IsNullOrEmpty(s) && s.StartsWith("="))
{
string[] fields = s.Split(';');
print(fields.Length.ToString());
if (fields.Length > 8)
{
print(fields[7]);
print(fields[8]);
IPAddress ip;
int port;
if (IPAddress.TryParse(fields[7], out ip))
SetValue(ConfigItem.IP_SERVER, fields[7]);
if (int.TryParse(fields[8], out port))
{
if (port == 0)
SetValue(ConfigItem.SERVER_PORT, "8883");
else
SetValue(ConfigItem.SERVER_PORT, fields[8]);
}
any_found = true;
Debug.Log(string.Format("MDNS - Server IP found at {0}:{1}", fields[7], fields[8]));
// Stop searching when first Server service is found
break;
}
}
}
if (!any_found)
Debug.Log("MDNS - None Server IP service found");
getIPAndPort.Close();
}