autregalaxie
-
Modifié par autregalaxie le 27/06/2011 à 13:05
autregalaxie -
27 juin 2011 à 14:38
Bonjour, je souhaite créer un serveur en c# qui va devoir attendre la connexion d'un client, récupéré quelques info les traiter et se remettre en attente de nouveaux clients. Ce qui me pose problème c'est la remise en attente après la déconnexion d'un client.
using System;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Text;
namespace ConsoleApplication2
{
class Program
{
public Program()
{
while (true)
{
string data;
IPEndPoint ipep = new IPEndPoint(IPAddress.Any, 9050);
Socket newsock = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp);
newsock.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
newsock.Bind(ipep);
newsock.Listen(20);
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();
// newsock.Disconnect(true); // j'ai essayé ça mais ça ne marche pas
//newsock.Shutdown(SocketShutdown.Both);n
}
}
public static void Main(String[] argv)
{
Program sts = new Program();
}