Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Modify the server.cs and client.cs programs for C# that will read from XML File

ID: 3803748 • Letter: M

Question

Modify the server.cs and client.cs programs for C# that will read from XML File, such that a client can enter a student ID like 'U101' and the server returns his/her major 'PHYSICS'. The client will automatically send the returned major back to the server in order to get the major's average GPA using the same XML file. Then, the client displays the major of the input student and the major's average GPA.

Client.cs

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Net.Sockets;

namespace ClientSocket
{
class Program
{
static void Main(string[] args)
{
TcpClient client = new TcpClient("127.0.0.1", 2055);
try
{
Stream s = client.GetStream();
StreamReader sr = new StreamReader(s);
StreamWriter sw = new StreamWriter(s);
sw.AutoFlush = true;
Console.WriteLine(sr.ReadLine());
while (true)
{
Console.Write("Enter a book title: ");
string title = Console.ReadLine();
sw.WriteLine(title);
if (title == "")
                       break;
Console.WriteLine(sr.ReadLine());
}
s.Close();
}
finally
{
client.Close();
}
}
}
}

Server.cs

/*
* C# program to accept a book title from clients and sends back
* its price using XML
*/

//SERVER SIDE PROGRAM
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Configuration;

namespace ServerSocket
{
class Program
{
static TcpListener listener;
const int LIMIT = 5;
public static void Query()
{
while (true)
{
Socket soc = listener.AcceptSocket();
Console.WriteLine("Connected: {0}", soc.RemoteEndPoint);
try
{     
                   Stream s = new NetworkStream(soc);
StreamReader sr = new StreamReader(s);
StreamWriter sw = new StreamWriter(s);
sw.AutoFlush = true; // enable automatic flushing
sw.WriteLine("{0} books available", ConfigurationManager.AppSettings.Count);
while (true)
{
string bookTitle = sr.ReadLine();
if (bookTitle == "" || bookTitle == null)
                           break;
string price = ConfigurationManager.AppSettings[bookTitle];
if (price == null)
                           price = "Sorry, no such book!";
sw.WriteLine(price);
}
s.Close();
}
catch (Exception e)
{

Console.WriteLine(e.Message);
}
Console.WriteLine("Disconnected: {0}", soc.RemoteEndPoint);
soc.Close();
}
}
static void Main(string[] args)
{
           IPAddress ipAd = IPAddress.Parse("127.0.0.1");
listener = new TcpListener(ipAd, 2055);
listener.Start();

Console.WriteLine("Server started, listening to port 2055");
for (int i = 0; i < LIMIT; i++)
{
Thread t = new Thread(new ThreadStart(Query));
t.Start();
               Console.WriteLine("Server thread {0} started....", ++i);
}
}
}
}

Gpa.exe.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key = "U101" value="PHYSICS"/>
<add key = "U102" value="EDU"/>
<add key = "U103" value="EDU"/>
<add key = "PHYSICS" value="3.11"/>
   <add key = "EDU" value="2.96"/>
   <add key = "U104" value="EE"/>
   <add key = "U105" value="PHYSICS"/>
   <add key = "EE" value="3.02"/>  
   <add key = "U106" value="EE"/>
   <add key = "U107" value="EDU"/>
   <add key = "U108" value="EE"/>
</appSettings>
</configuration>

Explanation / Answer

Client.cs

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Net.Sockets;

namespace ClientSocket
{
class Program
{
static void Main(string[] args)
{
TcpClient client = new TcpClient("127.0.0.1", 2055);
try
{
Stream s = client.GetStream();
StreamReader sr = new StreamReader(s);
StreamWriter sw = new StreamWriter(s);
sw.AutoFlush = true;
Console.WriteLine(sr.ReadLine());
while (true)
{
Console.Write("Enter a book title: ");
string title = Console.ReadLine();
sw.WriteLine(title);
if (title == "")
                       break;
Console.WriteLine(sr.ReadLine());
}
s.Close();
}
finally
{
client.Close();
}
}
}
}

Server.cs


//SERVER SIDE PROGRAM
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Configuration;

namespace ServerSocket
{
class Program
{
static TcpListener listener;
const int LIMIT = 5;
public static void Query()
{
while (true)
{
Socket soc = listener.AcceptSocket();
Console.WriteLine("Connected: {0}", soc.RemoteEndPoint);
try
{     
                   Stream s = new NetworkStream(soc);
StreamReader sr = new StreamReader(s);
StreamWriter sw = new StreamWriter(s);
sw.AutoFlush = true; // enable automatic flushing
sw.WriteLine("{0} books available", ConfigurationManager.AppSettings.Count);
while (true)
{
string bookTitle = sr.ReadLine();
if (bookTitle == "" || bookTitle == null)
                           break;
string price = ConfigurationManager.AppSettings[bookTitle];
if (price == null)
                           price = "Sorry, no such book!";
sw.WriteLine(price);
}
s.Close();
}
catch (Exception e)
{

Console.WriteLine(e.Message);
}
Console.WriteLine("Disconnected: {0}", soc.RemoteEndPoint);
soc.Close();
}
}
static void Main(string[] args)
{
           IPAddress ipAd = IPAddress.Parse("127.0.0.1");
listener = new TcpListener(ipAd, 2055);
listener.Start();

Console.WriteLine("Server started, listening to port 2055");
for (int i = 0; i < LIMIT; i++)
{
Thread t = new Thread(new ThreadStart(Query));
t.Start();
               Console.WriteLine("Server thread {0} started....", ++i);
}
}
}
}

Gpa.exe.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key = "U101" value="PHYSICS"/>
<add key = "U102" value="EDU"/>
<add key = "U103" value="EDU"/>
<add key = "PHYSICS" value="3.11"/>
   <add key = "EDU" value="2.96"/>
   <add key = "U104" value="EE"/>
   <add key = "U105" value="PHYSICS"/>
   <add key = "EE" value="3.02"/>  
   <add key = "U106" value="EE"/>
   <add key = "U107" value="EDU"/>
   <add key = "U108" value="EE"/>
</appSettings>
</configuration>

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote