Fixing Usage of Network port
This commit is contained in:
parent
5b32a2a00e
commit
f019b4e493
@ -111,7 +111,7 @@ namespace NetOpenVpnGui
|
|||||||
{
|
{
|
||||||
this.Statuslog.Items.Add(text);
|
this.Statuslog.Items.Add(text);
|
||||||
this.trayIcon.BalloonTipIcon = toolTipIcon;
|
this.trayIcon.BalloonTipIcon = toolTipIcon;
|
||||||
this.trayIcon.BalloonTipText = text;
|
this.trayIcon.BalloonTipText = sr.service + " " + text;
|
||||||
this.trayIcon.BalloonTipTitle = title;
|
this.trayIcon.BalloonTipTitle = title;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,45 +14,106 @@ namespace NetOpenVpnGui
|
|||||||
private IPEndPoint net_send_port;
|
private IPEndPoint net_send_port;
|
||||||
private UdpClient net_gets;
|
private UdpClient net_gets;
|
||||||
private IPEndPoint net_gets_port;
|
private IPEndPoint net_gets_port;
|
||||||
|
private string messageReceivedString;
|
||||||
|
private bool messageReceived;
|
||||||
|
private bool net_init = false;
|
||||||
public Runner(String p)
|
public Runner(String p)
|
||||||
{
|
{
|
||||||
this.service = p;
|
this.service = p;
|
||||||
this.net_send = new UdpClient();
|
|
||||||
this.net_send_port = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 34523);
|
|
||||||
this.net_gets = new UdpClient(34524);
|
|
||||||
this.net_gets_port = new IPEndPoint(IPAddress.Loopback, 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool run_service()
|
public bool run_service()
|
||||||
{
|
{
|
||||||
byte[] data = Encoding.UTF8.GetBytes("service start " + this.service);
|
return this.send("service start " + this.service);
|
||||||
this.net_send.Send(data, data.Length, this.net_send_port);
|
|
||||||
bool ret = Boolean.Parse(Encoding.UTF8.GetString(net_gets.Receive(ref net_gets_port)));
|
|
||||||
if (ret)
|
|
||||||
return true;
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool stop_service()
|
public bool stop_service()
|
||||||
{
|
{
|
||||||
byte[] data = Encoding.UTF8.GetBytes("service stop " + this.service);
|
return this.send("service stop " + this.service);
|
||||||
this.net_send.Send(data, data.Length, this.net_send_port);
|
|
||||||
bool ret = Boolean.Parse(Encoding.UTF8.GetString(net_gets.Receive(ref net_gets_port)));
|
|
||||||
if (ret)
|
|
||||||
return true;
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool check_service()
|
public bool check_service()
|
||||||
{
|
{
|
||||||
byte[] data = Encoding.UTF8.GetBytes("service status " + this.service);
|
return this.send("service status " + this.service);
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool send(string p)
|
||||||
|
{
|
||||||
|
this.init();
|
||||||
|
byte[] data = Encoding.UTF8.GetBytes(p);
|
||||||
this.net_send.Send(data, data.Length, this.net_send_port);
|
this.net_send.Send(data, data.Length, this.net_send_port);
|
||||||
bool ret = Boolean.Parse(Encoding.UTF8.GetString(net_gets.Receive(ref net_gets_port)));
|
//net_gets.Receive(ref net_gets_port);
|
||||||
if (ret)
|
|
||||||
return true;
|
UdpState s = new UdpState();
|
||||||
|
s.e = net_gets_port;
|
||||||
|
s.u = net_gets;
|
||||||
|
this.messageReceived = false;
|
||||||
|
net_gets.BeginReceive(new AsyncCallback(ReceiveCallback), s);
|
||||||
|
int i=0;
|
||||||
|
while (!this.messageReceived && i++<100)
|
||||||
|
{
|
||||||
|
System.Threading.Thread.Sleep(100);
|
||||||
|
}
|
||||||
|
if (!this.messageReceived)
|
||||||
|
{
|
||||||
|
this.close();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
this.close();
|
||||||
|
return Boolean.Parse(this.messageReceivedString);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void close()
|
||||||
|
{
|
||||||
|
if (this.net_init)
|
||||||
|
{
|
||||||
|
this.net_init = false;
|
||||||
|
this.net_gets.Close();
|
||||||
|
this.net_send.Close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void init()
|
||||||
|
{
|
||||||
|
if (!this.net_init)
|
||||||
|
{
|
||||||
|
this.net_init = true;
|
||||||
|
this.net_send = new UdpClient();
|
||||||
|
this.net_gets = new UdpClient(34524);
|
||||||
|
this.net_send_port = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 34523);
|
||||||
|
this.net_gets_port = new IPEndPoint(IPAddress.Loopback, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private void ReceiveCallback(IAsyncResult ar)
|
||||||
|
{
|
||||||
|
UdpClient u = (UdpClient)((UdpState)(ar.AsyncState)).u;
|
||||||
|
IPEndPoint e = (IPEndPoint)((UdpState)(ar.AsyncState)).e;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Byte[] receiveBytes = u.EndReceive(ar, ref e);
|
||||||
|
this.messageReceivedString = Encoding.UTF8.GetString(receiveBytes);
|
||||||
|
this.messageReceived = true;
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
this.messageReceivedString = "";
|
||||||
|
this.messageReceived = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public string service { get; set; }
|
public string service { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class UdpState
|
||||||
|
{
|
||||||
|
public IPEndPoint e;
|
||||||
|
public UdpClient u;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user