En este programa, al usar el cliente, se acepta el nombre del empleado y luego pasa el trabajo del empleado usando XML. En el lado del cliente, estamos usando un ciclo while y en cada iteración, estamos creando un valor para la variable ‘objeto’ usando el método TcpClient(). Esto se usa específicamente para proporcionar conexiones de cliente para servicios de red TCP. Además, hemos utilizado el método GetStream() que devuelve el NetworkStream que se utiliza para la transmisión de datos (envío y recepción).
Hemos asignado el valor del método AutoFlush() como verdadero. Esto marca específicamente el valor que indica si StreamWriter vaciaría el búfer a la secuencia especificada después de cada llamada a StreamWriter.Write. Hemos usado un ciclo while y en cada paso de la iteración, leemos el nombre del empleado.
Aquí, el método close() finaliza el flujo actual y libera cualquier recurso (como sockets y identificadores de archivos) vinculados con el flujo actual. En el lado del servidor, hemos utilizado la función AcceptSocket() que acepta la solicitud de conexión que está pendiente. De nuevo, hemos usado el ciclo while para leer el nombre del empleado.
Para verificar si la variable de nombre está vacía o es nula, hemos utilizado la declaración de condición If. Para obtener los datos de AppSettingsSection, hemos utilizado AppSettings para la configuración predeterminada de la aplicación actual.
Para comprobar si el valor de la variable ‘trabajo’ es igual a nulo, hemos utilizado otra condición if. Si esta condición se evalúa como verdadera, entonces hemos marcado el valor de la variable ‘trabajo’ como «Empleado no válido». Para escribir datos específicos estamos usando el método WriteLine(). El terminador de línea actual se usa luego para el flujo de salida estándar. Eventualmente, el nombre del empleado se da en el lado del cliente y se imprime el trabajo del empleado correspondiente.
Programa del lado del servidor:
C#
// C# server side program using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.IO; using System.Net; using System.Net.Sockets; using System.Configuration; class GFG{ static TcpListener myListener; const int MAX = 5; public static void Service() { while (true) { Socket mySocket = listener.AcceptSocket(); Console.WriteLine("Connected to {0}", mySocket.RemoteEndPoint); try { Stream myStream = new NetworkStream(mySocket); StreamReader myStreamReader = new StreamReader(myStream); StreamWriter myStreamWriter = new StreamWriter(myStream); // enable automatic flushing myStreamWriter.AutoFlush = true; myStreamWriter.WriteLine("{0} is the number of available Employees", ConfigurationSettings.AppSettings.Count); while (true) { string myName = myStreamReader.ReadLine(); if (myName == "" || myName == null) break; string myJob = ConfigurationSettings.AppSettings[name]; if (myJob == null) myJob = "Invalid Employee"; myStreamWriter.WriteLine(myJob); } mySocket.Close(); } catch (Exception exception) { Console.WriteLine(exception.Message); } Console.WriteLine("Disconnecting: {0}", mySocket.RemoteEndPoint); // Close the socket mySocket.Close(); } } // Driver code static public void Main() { // Listener listener = new TcpListener(2055); listener.Start(); Console.WriteLine("Listening to the port 2055..."); for(int i = 0; i < MAX; i++) { // Creating thread object Thread thread = new Thread(new ThreadStart(Service)); // Start the thread thread.Start(); } } }
Codificación XML:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <appSettings> <add key = "Bhuwanesh" value="Developer"/> <add key = "Harshit" value="Tester"/> </appSettings> </configuration>
Programa del lado del cliente:
C#
// C# program for Client Side using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using System.Net.Sockets; class GFG{ static public void Main() { TcpClient client = new TcpClient("win7-PC", 2055); try { Stream myStream = client.GetStream(); StreamReader myStreamReader = new StreamReader(myStream); StreamWriter myStreamWriter = new StreamWriter(myStream); myStreamWriter.AutoFlush = true; Console.WriteLine(myStreamReader.ReadLine()); while (true) { Console.Write("Name of the employee: "); string employeeName = Console.ReadLine(); myStreamWriter.WriteLine(employeeName); if (employeeName == "") break; Console.WriteLine(myStreamReader.ReadLine()); } myStream.Close(); } finally { client.Close(); } } }
Producción: