Recupero parametri da URL con socket, come?

di il
9 risposte

Recupero parametri da URL con socket, come?

Buongiorno a tutti,
avrei la necessità di passare dei comandi ad un pc server, utilizzando una sintassi URL, ad esempio:
>
L'instradamento all'ip è corretto e la porta è aperta correttamente.

Facendo delle ricerce, ho isolato questo codice, che faccio girare sul pc server:

public class Server
{
        string msg;
        Socket ServerSocket = null;

        public Server(int porta)
        {
            byte[] bytes = new Byte[1024];
            string data = null;

            ServerSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            try
            {
                ServerSocket.Bind(new IPEndPoint(IPAddress.Any, porta));
                ServerSocket.Listen(1);
                while(true)
                {
                    Socket handler = ServerSocket.Accept();
                    data = null;

                    while (true)
                    {
                        int bytesRec = ServerSocket.Receive(bytes);
                        data += Encoding.ASCII.GetString(bytes, 0, bytesRec);
                        if (data.IndexOf("<EOF>") > -1)
                        {
                            break;
                        }
                    }
                    Console.WriteLine(data);
               }
         }
         catch (Exception e)
         {
               Console.WriteLine(e.ToString());
         }
   }
ma non funziona.
Da quello che ho capito, in teoria il mio codice dovrebbe fare da ServerWeb, mettendosi in ascolto sulla porta, e nel momento che io invio la stringa sopra riportata per esempio, dovrebbe recuperarmela e visualizzarla su Console, ma questo non avviene.
Sto forse utilizzando un approcio sbagliato? Non devo usare i socket?
Che soluzione mi consigliate?

Grazie per l'aiuto

9 Risposte

  • Re: Recupero parametri da URL con socket, come?

    Ma è un esercizio scolastico o cosa?
  • Re: Recupero parametri da URL con socket, come?

    O cosa!
  • Re: Recupero parametri da URL con socket, come?

    Approccio sbagliato!

    Le socket si usano come soluzione disperata.

    Ci sono n-mila librerie che semplificano la vita PROPRIO in problematiche del genere!

    Basta cercare con Google.
  • Re: Recupero parametri da URL con socket, come?

    Grazie x la risposta, ma quale argomento o procedura posso cercare in google?
  • Re: Recupero parametri da URL con socket, come?

    uelfox ha scritto:


    O cosa!
    Ovvero? Cosa devi fare? Molto probabilmente non lo fai con le socket...
  • Re: Recupero parametri da URL con socket, come?

    migliorabile ha scritto:


    Ci sono n-mila librerie che semplificano la vita PROPRIO in problematiche del genere!
    Mi daresti qualche indicazione su quali potrei studiarle e usarle?
  • Re: Recupero parametri da URL con socket, come?

    Io in .NET, per creare un socket TCP, ho sempre usato TcpListener da un lato e TcpClient dall'altro. Socket, onestamente, non l'ho mai visto usare

    https://docs.microsoft.com/it-it/dotnet/api/system.net.sockets.tcplistener?view=netframework-4.7.2

    https://docs.microsoft.com/it-it/dotnet/api/system.net.sockets.tcpclient?view=netframework-4.7.2
  • Re: Recupero parametri da URL con socket, come?

    uelfox ha scritto:


    migliorabile ha scritto:


    Ci sono n-mila librerie che semplificano la vita PROPRIO in problematiche del genere!
    Mi daresti qualche indicazione su quali potrei studiarle e usarle?
    Anche se non ti degni di dare risposte a chi ti fa domande ti consiglio ugualmente anch'io di studiate la classe TcpListener
  • Re: Recupero parametri da URL con socket, come?

    Se ho ben capito, tu vuoi passare una stringa (di comando) attraverso un URL al PC su cui gira un server web.
    Secondo me, il modo più semplice (solo tre righe di codice) è creare, all'interno del Home Controller, una semplicissima Action con parametri, su un progetto ASP.NET Core MVC, che gira ovviamente sul pc server web:
    public IActionResult ActionConParametri(int id, string comando)
            {
                ViewData["Command"] = comando;
                return View();
            }
    
    e crei ovviamente anche la corrispondente view (con layout) che si chiama "ActionConParametri" (come la Action), che ti serve per visualizzare, per prova, il comando che tu hai messo nell'URL:
    
    <h2>ActionConParametri</h2>
    <p>@ViewData["Command"]</p>
    
    E nel browser del client, per inviare la tua stringa di comando (per esempio "provacomando") al server digiti:

    https://Nome_del_tuo_server/Home/ActionConParametri/4?comando=provacomando

    (Il numero 4 può essere un numero qualsiasi: è obbligatorio, così non devi modificare la route nel config del tuo progetto ASP)
    In questo modo, in questa piccola action che hai creato, ti trovi assegnata la variabile stringa "comando" che conterrà la stringa che hai digitato dopo "comando=" nell'URL (in questo caso ti ritroverai "provacomando"). Se preferisci, puoi anche salvarla su un file di testo...

    Buona fortuna
Devi accedere o registrarti per scrivere nel forum
9 risposte