1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Contrat;
using System.ServiceModel;
namespace ConsoleApplication1
{
[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Reentrant, InstanceContextMode = InstanceContextMode.PerSession)]
public class FxComServer : Iserver
{
private string login;
private Iclient client;
public bool Login(string user, string password)
{
login = user;
client = OperationContext.Current.GetCallbackChannel<Iclient>();
return true;
}
public bool Say(string text)
{
client.ReceiveMessage(login + " said " + text);
return true;
}
internal static class Host
{
internal static ServiceHost myServiceHost = null;
internal static void StartService()
{
//Instantiate new ServiceHost
myServiceHost = new ServiceHost(typeof(ConsoleApplication1.FxComServer));
//Open myServiceHost
myServiceHost.Open();
}
internal static void StopService()
{
//Call StopService from your shutdown logic (i.e. dispose method)
if (myServiceHost.State != CommunicationState.Closed)
myServiceHost.Close();
}
static void Main(string[] args)
{
StartService();
// On attend les connections
Console.WriteLine("Server ready");
Console.ReadLine();
StopService();
}
}
}
} |