本帖最后由 xiaozhu39505 于 2012-08-31 10:44:50 编辑

解决方案 »

  1.   

    网络环境应该没问题的,因为同样的代码,我用winform测试TCP监听,内网外网的连接都能监听到,一弄成服务就不行了。
    所以我觉得是不是服务还需要什么配置
      

  2.   

    /// <summary>
            /// 监听TCP连接
            /// </summary>
            public void DTUListen()
            {
                DTUListener = new TcpListener(new IPEndPoint(IPAddress.Any, 2020));
                DTUListener.Start();
                Task taskMain = Task.Factory.StartNew(() =>
                {
                    try
                    {
                        LoggingService.Debug("DTU监听开启,端口号:" + global.DtuListenPort.ToString());
                        while (true)
                        {
                            TcpClient tc = DTUListener.AcceptTcpClient();
                            Action<object> act = new Action<object>(DtuChildListen);
                            tc.ReceiveTimeout = global.readTimeout;
                            tc.SendTimeout = global.writeTimeout;
                            Task tt = Task.Factory.StartNew(act, tc, TaskCreationOptions.LongRunning);
                            DTU_TcpList.Add(tc);
                        }
                    }
                    catch (Exception ee)
                    {
                        LoggingService.Error("DTU_Listen线程错误,错误信息:" + ee.Message);
                    }
                }, TaskCreationOptions.LongRunning);
            }这一段是监听的代码,放到服务程序里之后,就监听不到连接了,放在winform里就可以,很奇怪
      

  3.   

    是不是防火墙? 是不是线程堵塞?  端口冲突? 或是 未知bug ?楼主是否能开源? 楼主是否能给分? 
    专业挽尊楼主20年。楼主你懂的。