StreamWriter - Stream stopper pludselig efter kort tid!
HejsaJeg er stødt ind i nogle problemer med at bruge StreamWriter.
Jeg har lavet en simpel Server og Client Console applikation, hvor klienten streamer tekst til serveren, men streamingen stopper efter meget kort tid... det virker som om en eller anden buffer bliver fyldt
Nedenunder er de stumper kode. Start først Server og dernæst Client. De køre blot lokalt på 127.0.0.1.
Senere skal jeg bruge det til at serialisere nogle objekter og sende dem via stream'en
Jeg håber virkelig at nogle kan hjælpe... jeg har rodet med det i flere dage nu :-(
//SERVER kode:
using System;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Text;
class StreamTcpSrvr
{
public static void Main()
{
string data;
IPEndPoint ipep = new IPEndPoint(IPAddress.Any, 9050);
Socket newsock = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp);
newsock.Bind(ipep);
newsock.Listen(10);
Console.WriteLine("Waiting for a client...");
Socket client = newsock.Accept();
IPEndPoint newclient = (IPEndPoint)client.RemoteEndPoint;
Console.WriteLine("Connected with {0} at port {1}",
newclient.Address, newclient.Port);
NetworkStream ns = new NetworkStream(client);
StreamReader sr = new StreamReader(ns);
StreamWriter sw = new StreamWriter(ns);
string welcome = "Welcome to my test server";
sw.WriteLine(welcome);
sw.Flush();
while (true)
{
try
{
data = sr.ReadLine();
}
catch (IOException)
{
break;
}
Console.WriteLine(data);
sw.WriteLine(data);
sw.Flush();
}
Console.WriteLine("Disconnected from {0}", newclient.Address);
sw.Close();
sr.Close();
ns.Close();
}
}
//CLIENT kode:
using System;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Xml;
using System.Xml.Serialization;
using System.Threading;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
using System.Runtime.Serialization.Formatters.Soap;
using System.Collections.Generic;
public class StreamTcpClient
{
public static void Main()
{
IPEndPoint ipep = new IPEndPoint(
IPAddress.Parse("127.0.0.1"), 9050);
Socket server = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp);
try
{
server.Connect(ipep);
}
catch (SocketException e)
{
Console.WriteLine("Unable to connect to server.");
Console.WriteLine(e.ToString());
return;
}
NetworkStream ns = new NetworkStream(server);
StreamReader sr = new StreamReader(ns);
StreamWriter sw = new StreamWriter(ns);
int i = 1;
while (i<5000)//sender 5000 test strenge
{
Thread.Sleep(10);//indsat for at vise at det ikke er fordi det går for stærkt
try
{
string Str2 = Convert.ToString(i++) + " " + "TESTING";//streamer til server
sw.WriteLine(Str2);
sw.Flush();
Console.WriteLine(Str2);//output til client
}
catch (IOException)
{
break;
}
}
Console.WriteLine("Disconnecting from server...");
sr.Close();
sw.Close();
ns.Close();
server.Shutdown(SocketShutdown.Both);
server.Close();
}
}