using System.Net; using System.Net.Sockets; using System.Text; namespace Client; internal class Program { private const int Porta = 1322; private const int TimeoutLetturaMs = 5 * 60 * 1000; private static void Main(string[] args) { Console.WriteLine("Hello, Server!"); try { using var client = new TcpClient("127.0.0.1", Porta); Encoding utf8SenzaBom = new UTF8Encoding(false); client.ReceiveTimeout = TimeoutLetturaMs; Console.WriteLine("Client connesso alla porta " + Porta); using NetworkStream stream = client.GetStream(); using StreamReader reader = new StreamReader(stream, utf8SenzaBom); using StreamWriter writer = new StreamWriter(stream, utf8SenzaBom); writer.AutoFlush = true; var messaggioDalServer = reader.ReadLine(); if (messaggioDalServer == null) Console.WriteLine("Server morto"); else { Console.WriteLine("Server: " + messaggioDalServer); while (true) { Console.Write("$: "); string? msg = Console.ReadLine(); if (msg == null || msg == "exit") break; writer.WriteLine(msg); string? msgServer = reader.ReadLine(); Console.WriteLine(msgServer); } } } catch (IOException e) { SocketException? causa = e.InnerException as SocketException; if (causa != null && causa.SocketErrorCode == SocketError.TimedOut) Console.WriteLine("Time out"); else Console.WriteLine("Connessione terminata dal server: " + e.Message); Console.WriteLine(e.Message); } catch (Exception e) { Console.WriteLine("Errore: " + e.Message); } finally { Console.WriteLine("Premi un tasto per chiudere"); Console.ReadKey(); } } }