2016-07-28 8 views
0

포트를 열고 로그 파일에 텍스트 파일을 작성하는 Windows 서비스를 만들었습니다. 비동기 데이터 통신으로 여러 클라이언트를 연결할 수 있습니다. 그러나 문제는 생성되지 않습니다. 로그 파일뿐만 아니라 어떤 data.kindly 로깅을하지 않습니다 내가 어디서 잘못하고 있는지 안내 ??? 여기 내 코드는 ...Tcp Windows 서비스가 로그 파일을 만들지 못합니다

이제 아래의 코드로 모든 일이

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); 
      } 

잘 너희들 감사하고있다
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(); 
      } 
     } 
    } 
} 
+0

그래서,이 코드를 디버깅 할 때, 무슨 일이야? 당신이 로그 파일을 만들지 않는 이유를 알아 내기 위해 디버깅했다고 가정하기 때문에. –

+0

미안 해요 ... 위의 코드를 디버깅 할 때 파일을 만들지 만 데이터를 로깅하지 않습니다 ... –

+0

빈 예외는 어떻습니까? "catch (Exception ex) {...}"아마도 여기에 있습니다 ... –

답변

0

....

+0

else 분기는 매우 혼란 스럽습니다. 그것도 작동하지 않습니다. '(StreamWriter writer = 새로운 StreamWriter (파일 경로, 참)) { writer.WriteLine (Message); }'모두 필요한 것입니다. 아니''전혀. 또는,'File.AppendText (...)'. – usr