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 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
|
namespace TEST_RemoteControl
{
class CSession
{
private static int iTimeEnd = 10000;
private bool bRun;
private Thread threadSession;
static readonly int iListenPortDefault = 4000;
int iListenPort = 4000;
static int iSizeBufferRead = 256;
private static TcpListener server;
public void processClient()
{
byte[] data = new byte[iSizeBufferRead];
while (Thread.CurrentThread.IsAlive && this.bRun)
{
TcpClient client;
NetworkStream stream;
int iNbyteRead = 0;
int iNByteFree = data.Length; ;
client = server.AcceptTcpClient();
if (client != null)
{
int iNbDataRead = 0;
stream = client.GetStream();
stream.ReadTimeout = iTimeEnd;
iNbDataRead = stream.Read(data,0,iNByteFree);
//si timeout se remettre en attente de connection
//sinon traiter les données reçu
//processData(iNbDataRead, data);
client.Close();
}
}
return;
}
public CSession(int iPort)
{
bRun = false;
threadSession = new Thread(new ThreadStart(processClient));
server = new TcpListener(System.Net.IPAddress.Any, iListenPort);
iListenPort = iPort;
}
public CSession()
: this(CSession.iListenPortDefault)
{
}
public void Start()
{
server.Start();
bRun = true;
threadSession.Start();
}
public void Stop()
{
bRun = false;
if (!threadSession.Join(iTimeEnd))
threadSession.Abort();
}
}
class Program
{
static void Main(string[] args)
{
CSession sessionObj = new CSession(4000);
sessionObj.Start();
Console.ReadLine();
sessionObj.Stop();
return;
}
}
} |
Partager