Minulla on HTTP-palvelin, jota hostaan omalta koneelta. Tarkoituksena on lähettää puhelimesta dataa serverille, jota hostaan samassa lähiverkossa.
Palvelin toimii hienosti "standalone"-sovelluksena, mutta kun laitan palvelimen pyörimään Windows Servicenä, ei se vastaa kyselyihin, paitsi sillä koneella millä hostaan.
http://localhost:8080/ sekä http://192.168.1.121:8080 toimii hostikoneella hienosti, mutta esim. puhelimen selaimella joka on samassa WLAN-verkossa ei pääse palvelimeen käsiksi jos se pyörii servicenä.
Windows 8.1 admin-oikeuksilla.
// C#
IPAddress GetPublicIP()
{
IPHostEntry host = Dns.GetHostEntry(Dns.GetHostName());
foreach (IPAddress ip in host.AddressList)
{
if (ip.AddressFamily == AddressFamily.InterNetwork)
{
return ip;
}
}
return null;
}
public void listen() {
listener = new TcpListener(GetPublicIP(), port);
listener.Start();
while (is_active) {
TcpClient s = listener.AcceptTcpClient();
HttpProcessor processor = new HttpProcessor(s, this);
Thread thread = new Thread(new ThreadStart(processor.process));
thread.Start();
Thread.Sleep(1);
}
}Voisko windowsissa olla palomuuri joka blokkaa?
No niinpä tietysti. Serviceä ajettaessa ei tule tuota normaalia popuppia, joka kysyy tuosta blokkauksesta :) Kiitoksia, nyt toimii.
Aihe on jo aika vanha, joten et voi enää vastata siihen.