포트를 열고 로그 파일에 텍스트 파일을 작성하는 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();
}
}
}
}
그래서,이 코드를 디버깅 할 때, 무슨 일이야? 당신이 로그 파일을 만들지 않는 이유를 알아 내기 위해 디버깅했다고 가정하기 때문에. –
미안 해요 ... 위의 코드를 디버깅 할 때 파일을 만들지 만 데이터를 로깅하지 않습니다 ... –
빈 예외는 어떻습니까? "catch (Exception ex) {...}"아마도 여기에 있습니다 ... –