Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [C#] Quesito riguardante la TCPListener

    Nell'esempio riportato dalla guida in linea riguardante la classe TCPListener, non mi è chiaro un punto.

    Riporto il codice in questione:

    codice:
    using System;
    using System.IO;
    using System.Net;
    using System.Net.Sockets;
    using System.Text;
    
    class MyTcpListener
    {
      public static void Main()
      {    
        try
        {
          // Set the TcpListener on port 13000.
          Int32 port = 13000;
          IPAddress localAddr = IPAddress.Parse("127.0.0.1");
          
          // TcpListener server = new TcpListener(port);
          TcpListener server = new TcpListener(localAddr, port);
    
          // Start listening for client requests.
          server.Start();
             
          // Buffer for reading data
          Byte[] bytes = new Byte[256];
          String data = null;
    
          // Enter the listening loop.
          while(true) 
          {
            Console.Write("Waiting for a connection... ");
            
            // Perform a blocking call to accept requests.
            // You could also user server.AcceptSocket() here.
            TcpClient client = server.AcceptTcpClient();            
            Console.WriteLine("Connected!");
    
            data = null;
    
            // Get a stream object for reading and writing
            NetworkStream stream = client.GetStream();
    
            int i;
    
            // Loop to receive all the data sent by the client.
            while((i = stream.Read(bytes, 0, bytes.Length))!=0) 
            {   
              // Translate data bytes to a ASCII string.
              data = System.Text.Encoding.ASCII.GetString(bytes, 0, i);
              Console.WriteLine(String.Format("Received: {0}", data));
           
              // Process the data sent by the client.
              data = data.ToUpper();
    
              byte[] msg = System.Text.Encoding.ASCII.GetBytes(data);
    
              // Send back a response.
              stream.Write(msg, 0, msg.Length);
              Console.WriteLine(String.Format("Sent: {0}", data));            
            }
             
            // Shutdown and end connection
            client.Close();
          }
        }
        catch(SocketException e)
        {
          Console.WriteLine("SocketException: {0}", e);
        }
          
        Console.WriteLine("\nHit enter to continue...");
        Console.Read();
      }   
    }
    Il frammento di codice che non mi è chairo è questo:

    codice:
    // Enter the listening loop.
          while(true)
    Il true a cosa si riferisce? Cosa viene controllato?

    Grazie.

  2. #2
    Un'altra cosa, lo scambio dati della mia applicazione Client/Server tra le due parti, funziona senza intoppi, però c'è un particolare.

    Quando chiudo il Client, il Server non rimane in ascolto sulla porta, non segnalla errori, ma vorrei che stesse comunque in ascolto anche quando chiudo il Client.

    Per la comunicazione ho fatto uso delle classi TCPCLient e TCPListener come riportato negli esempi della guida in linea.

    Secondo voi cosa può essere a bloccare il Server quando viene chiuso il Client?
    Il metodo Server.Stop()? O Client.Close()?

    Grazie.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.