XmlSerialization over a NetworkStream

C

Curious

Hi,

I am trying to send data over the network using XmlSerialization. The
code shown below is what I am executing.

My problem is that no message is arriving in the Server method, and the
Deserialize method is blocking.

Can someone help me figure out my problem.
Thanks in Advance

public static Semaphore semaphore;

public static void Server()
{
TcpListener listener = new TcpListener(55650);
listener.Start();
Socket socket = listener.AcceptSocket();
Console.WriteLine("client connected");

NetworkStream netStream = new NetworkStream(socket);
StreamReader reader = new StreamReader(netStream);

string msg;
XmlSerializer ser = new XmlSerializer(typeof(string));
semaphore.Acquire();
Console.WriteLine("Waiting for data");
msg = (string)ser.Deserialize(reader);
Console.WriteLine(msg);
Console.WriteLine("terminate");
}

static void Main(string[] args)
{
semaphore = new Semaphore(0, 1);
Thread t = new Thread(new ThreadStart(Runner.Server));
t.Start();

TcpClient client = new TcpClient();
client.Connect("127.0.0.1", 55650);
Console.WriteLine("Connected");
NetworkStream netStream = client.GetStream();

XmlSerializer ser = new XmlSerializer(typeof(string));
StreamWriter writer = new StreamWriter(netStream);
ser.Serialize(writer, "Hello World");
Console.WriteLine("Data Sent");
semaphore.Release();

Console.ReadLine();
}
 
C

Curious

Hi,
I changed the server method to the code below. Now that code is
executing perfectly, and the result being returned is:

<Transfer xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.
org/2001/XMLSchema-instance">
<Data>hello world</Data>

public static void Server()
{
TcpListener listener = new TcpListener(55650);
listener.Start();
Socket socket = listener.AcceptSocket();
Console.WriteLine("client connected");
NetworkStream netStream = new NetworkStream(socket);
StreamReader reader = new StreamReader(netStream);
semaphore.Acquire();
Console.WriteLine("Waiting for data");
Console.WriteLine(reader.ReadLine());
Console.WriteLine(reader.ReadLine());
Console.WriteLine(reader.ReadLine());
Console.WriteLine("terminate");
}

Can some help be given regarding this problem. Thanks in Advance
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top