У меня есть часы, подключенные к моей локальной сети, и у меня есть сервер Windows в локальной сети, и я не могу заставиC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 У меня есть часы, подключенные к моей локальной сети, и у меня есть сервер Windows в локальной сети, и я не могу застави

Сообщение Anonymous »

Я разрабатываю службу .NET, которая действует как сервер, прослушивающий порт 3000. Служба реализована и правильно работает в локальной среде. Однако я столкнулся с трудностями при подключении устройства таймера в моей локальной сети к серверу через порт 3000.
Конфигурация устройства таймера проста и выполняется через панель. На этой панели я указываю IP-адрес хоста, порт связи, режим связи и режим работы таймера (клиент или сервер). В моем случае я настроил таймер для работы в качестве клиента, поэтому он периодически пытается связаться с хостом через настроенный порт.
Когда я запускаю службу локально, все работает отлично. Однако при развертывании его в производственной среде или настройке сети связь прерывается. Я уже открыл необходимые правила брандмауэра для входящего и исходящего трафика на порту 3000, но все еще не могу заставить его работать.
Буду признателен за любую помощь в определении того, что может отсутствовать или любые дополнительные конфигурации, которые мне следует проверить. Заранее спасибо!
В коде я использую TcpListener, настроенный на прослушивание соединений через порт 3000. Я также реализовал файл журнала для записи событий связи. При локальном тестировании с использованием PowerShell с помощью команды:
Test-NetConnection -ComputerName 191...175 -Port 3000
или с помощью Telnet связь работает как положено, и в журнале события фиксируются правильно.
Здесь блокируем код
Для создания программы:
1-й шаг: откройте визуализацию Studio
2-й шаг: выберите шаблон Worker Service
3-й шаг: замените код класса Worker.cs на:

Код: Выделить всё

using System.Net.Sockets;
using System.Net;

namespace service
{
public class Worker : BackgroundService
{
private readonly ILogger _logger;

public Worker(ILogger logger)
{
_logger = logger;
}

protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
TcpListener listener = new(IPAddress.Any, 3000);
listener.Start();
string path = @"C:\LogsService";
string filePath = Path.Combine(path, "log.txt");

if (!Directory.Exists(path))
Directory.CreateDirectory(path);
using (var fileStream = new FileStream(filePath, FileMode.Append, FileAccess.Write, FileShare.ReadWrite))
{
using (var write = new StreamWriter(fileStream))
{
await write.WriteLineAsync($"Worker running");
}
}
while (!stoppingToken.IsCancellationRequested)
{
var client = await listener.AcceptTcpClientAsync();

try
{
using (var fileStream = new FileStream(filePath, FileMode.Append, FileAccess.Write, FileShare.ReadWrite))
{
using(var write = new StreamWriter(fileStream))
{
await write.WriteLineAsync($"Worker running at:{client.Client.RemoteEndPoint?.ToString()}");
}
}
}
catch (Exception)
{
throw;
}
}
try
{
using (var fileStream = new FileStream(Path.Combine(path, "exit.txt"), FileMode.Append, FileAccess.Write, FileShare.ReadWrite))
{
using (var write = new StreamWriter(fileStream))
{
await write.WriteLineAsync($"Exit: {stoppingToken.IsCancellationRequested.ToString()}");
}
}
}
catch (Exception)
{
throw;
}
}
}
}
Здесь настройки часов устройства
Изображение


Подробнее здесь: https://stackoverflow.com/questions/793 ... -server-on
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»