Ich habe einen Windows-Dienst erstellt, der den Port öffnen und protokolliert die Daten in Textdatei.Es ist asynchrone Datenkommunikation ermöglichen, mehrere Clients zu verbinden.Aber mein Problem ist, es erstellt keine Log-Datei als auch es protokolliert keine Daten. Wohin führen Sie mich, wo ich falsch mache ??? hier ist mein Code ...Tcp Windows-Dienst erstellt keine Protokolldatei
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();
}
}
}
}
Also, wenn Sie diesen Code debuggen, was geschieht? Weil ich davon ausgehe, dass Sie es ausgepackt haben, um herauszufinden, warum es Ihre Logdatei nicht erstellt. –
Tut mir leid, dass ich das verpasst habe ... Wenn ich den obigen Code debugge Es erstellt die Datei aber nicht die Daten protokollieren ... –
Wie wäre es mit leeren Ausnahme? "catch (Exception ex) {...}" ist wahrscheinlich etwas hier ... –