简体   繁体   中英

Tcp windows service not creating any log file

I have created a Windows service Which will open the port and log the data in text file.It is asynchronous data communication allow to connect multiple Clients.But my problem is it is not creating any log file as well it is not logging any data.kindly guide me where i am doing wrong??? here is my code...

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.ServiceProcess;
using System.Text;
using System.Threading.Tasks;
using System.Configuration;
using System.IO;

namespace TcpService
{
    public partial class Service1 : ServiceBase
    {
        public Service1()
        {
            InitializeComponent();
        }

        protected override void OnStart(string[] args)
        {
            SetupServer();
        }

        public void OnDebug()
        {
            OnStart(null);
        }

        protected override void OnStop()
        {
            Service1._serverSocket = null;
        }

        private static byte[] _buffer = new byte[1024];
        private static List<Socket> _ClientSockets = new List<Socket>();
        private static int port = 10000;
        private static IPAddress iparr = IPAddress.Parse("192.168.1.12");
        private static Socket _serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        private static void SetupServer()
        {
            //Console.WriteLine("Setting Up server");
            _serverSocket.Bind(new IPEndPoint(iparr, port));
            _serverSocket.Listen(100);
            _serverSocket.BeginAccept(new AsyncCallback(AcceptCallback), null);
        }

        private static void AcceptCallback(IAsyncResult AR)
        {
            Socket socket = _serverSocket.EndAccept(AR);
            _ClientSockets.Add(socket);
            //Console.WriteLine("Client Connected");
            socket.BeginReceive(_buffer, 0, _buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveCallback), socket);
            _serverSocket.BeginAccept(new AsyncCallback(AcceptCallback), null);
        }

        private static void ReceiveCallback(IAsyncResult AR)
        {
            try
            {
                SocketError errorCode;
                Socket socket = (Socket)AR.AsyncState;
                int received = socket.EndReceive(AR, out errorCode);
                if (errorCode != SocketError.Success)
                {
                    received = 0;
                }

                byte[] databuf = new byte[received];
                Array.Copy(_buffer, databuf, received);
                string text = BitConverter.ToString(databuf);
                string time = DateTime.Now.TimeOfDay.ToString();
                string dataline = time + "____" + text;
                AddtoLogFile(dataline);
                socket.BeginReceive(_buffer, 0, _buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveCallback), socket);
            }
            catch (Exception ex)
            {
            }
        }

        private static void AddtoLogFile(string Message)
        {
            string LogPath = @"D:\\Logfile\\";
            string filename = "Log_" + DateTime.Now.ToString("dd-MM-yyyy") + ".txt";
            string filepath = LogPath + filename;
            if (File.Exists(filepath))
            {
                using (StreamWriter writer = new StreamWriter(filepath, true))
                {
                    writer.WriteLine(Message);
                }
            }
            else
            {
                StreamWriter writer = File.CreateText(filepath);
                writer.WriteLine(Message);
                writer.Close();
            }
        }
    }
}

Now with the below code Every thing is working fine

  private static void AddtoLogFile(string Message)
    {
        string LogPath = @"D:\Logfile\";
        string filename = "Log_" + DateTime.Now.ToString("dd-MM-yyyy") + ".txt";
        string filepath = LogPath + filename;
        if (File.Exists(filepath))
        {
            using (StreamWriter writer = new StreamWriter(filepath, true))
            {
                writer.WriteLine(Message);
            }
        }
        else
        {
            using (StreamWriter writer = new StreamWriter(filepath, false))
            {
               using(StreamWriter writer1 = File.CreateText(filepath))
                {
                   if(File.Exists(filepath))
                   {
                       writer.WriteLine(Message);
                   }
                }
                //StreamWriter writer1 = File.CreateText(filepath);
                //writer.WriteLine(Message);
            }

Thank you guys....

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM