Untitled
unknown
plain_text
2 years ago
2.4 kB
4
Indexable
using Microsoft.AspNetCore.Mvc;
using System;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;
namespace SocketApi.Controllers
{
[ApiController]
[Route("[controller]")]
public class SocketController : ControllerBase
{
private const string serverIpAddress = "127.0.0.1"; // Indirizzo IP del server socket
private const int serverPort = 8080; // Porta del server socket
private TcpClient _tcpClient;
private NetworkStream _stream;
public SocketController()
{
_tcpClient = new TcpClient();
_tcpClient.Connect(serverIpAddress, serverPort);
_stream = _tcpClient.GetStream();
}
[HttpPost("initialize")]
public async Task<IActionResult> InitializeSystem()
{
try
{
await SendMessageAsync("INITIALIZE");
return Ok("Sistema inizializzato con successo.");
}
catch (Exception ex)
{
return StatusCode(500, "Errore durante l'inizializzazione del sistema: " + ex.Message);
}
}
[HttpPost("call")]
public async Task<IActionResult> CallServer([FromBody] string command)
{
try
{
await SendMessageAsync(command);
return Ok("Comando inviato con successo al server.");
}
catch (Exception ex)
{
return StatusCode(500, "Errore durante l'invio del comando al server: " + ex.Message);
}
}
[HttpPost("shutdown")]
public async Task<IActionResult> ShutdownSystem()
{
try
{
await SendMessageAsync("SHUTDOWN");
return Ok("Sistema spento con successo.");
}
catch (Exception ex)
{
return StatusCode(500, "Errore durante lo spegnimento del sistema: " + ex.Message);
}
}
private async Task SendMessageAsync(string message)
{
byte[] data = Encoding.ASCII.GetBytes(message);
await _stream.WriteAsync(data, 0, data.Length);
}
// Chiudi la connessione quando il servizio viene distrutto
~SocketController()
{
_stream.Close();
_tcpClient.Close();
}
}
}
Editor is loading...
Leave a Comment