'programming'에 해당되는 글 387건

  1. 2011.04.19 Threaded Tcp Server

Threaded Tcp Server

programming 2011. 4. 19. 22:06
반응형
http://www.java2s.com/Code/CSharp/Network/ThreadedTcpServer.htm

Threaded Tcp Server

/*
C# Network Programming
by Richard Blum

Publisher: Sybex
ISBN: 0782141765
*/
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;

public class ThreadedTcpSrvr {
private TcpListener client;

public ThreadedTcpSrvr()
{
client = new TcpListener(9050);
client.Start();

Console.WriteLine("Waiting for clients...");
while(true)
{
while (!client.Pending())
{
Thread.Sleep(1000);
}

ConnectionThread newconnection = new ConnectionThread();
newconnection.threadListener = this.client;
Thread newthread = new Thread(new
ThreadStart(newconnection.HandleConnection));
newthread.Start();
}
}

public static void Main()
{
ThreadedTcpSrvr server = new ThreadedTcpSrvr();
}
}

class ConnectionThread
{
public TcpListener threadListener;
private static int connections = 0;

public void HandleConnection()
{
int recv;
byte[] data = new byte[1024];

TcpClient client = threadListener.AcceptTcpClient();
NetworkStream ns = client.GetStream();
connections++;
Console.WriteLine("New client accepted: {0} active connections",
connections);

string welcome = "Welcome to my test server";
data = Encoding.ASCII.GetBytes(welcome);
ns.Write(data, 0, data.Length);

while(true)
{
data = new byte[1024];
recv = ns.Read(data, 0, data.Length);
if (recv == 0)
break;

ns.Write(data, 0, recv);
}
ns.Close();
client.Close();
connections--;
Console.WriteLine("Client disconnected: {0} active connections",
connections);
}
}

반응형
Posted by 공간사랑
,