我正在尝试创建一个需要在后台运行并侦听传入流量的 Windows 服务(普通和常规 TCP 侦听器)
我的代码是:
private TcpListener server;
public void startServer()
{
// EventLog.WriteEntry(source, "connected on: " + ipAddress.ToString() + " port: " + Service1.Port.ToString());
server = new TcpListener(IPAddress.Parse("127.0.0.1"), Service1.Port);
server.Start();
while (true)
{
var client = server.AcceptTcpClient();
new Thread(work).Start(client);
}
public void work(object client)
{
string msg = null;
var clientLocal = (TcpClient)client;
using (NetworkStream ns = clientLocal.GetStream())
using (StreamReader sr = new StreamReader(ns))
{
byte[] msgFullArray = new UTF8Encoding(true).GetBytes(msg);
fs.Write(msgFullArray, 0, msg.Length);
}
现在,如果您根本不查看工作方法,因为每当我启动我的服务时,每当我尝试在我的以下位置启动它时它都会冻结:
var client = server.AcceptTcpClient();
这意味着我的服务永远不会使用 Thread 或我的 Work 方法。我可以从以前的日志中看到它进入了我的 while 循环,然后只是让服务超时