Серверное приложение, сокеты - C#
Формулировка задачи:
Доброго времени суток.
Есть код простого серверного приложения:
как сделать так, чтобы к серверу могло подключаться n-ное количествое клиентов? пробовал - но ничего не выходит.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Net.Sockets;
using System.Net;
using System.Threading;
namespace serv
{
class Program
{
public static Socket serv;
static void Main(string[] args)
{
//настраивает сокет
serv = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
// задаем ip адреса и порт
IPEndPoint point = new IPEndPoint(IPAddress.Any, 777);
serv.Bind(point);
Console.WriteLine("777 is waitng for u");
serv.Listen(10);
//запускаем обработчик входящих-исходящих данных
Server();
}
static void Server()
{
while (true)
{
Socket handle = serv.Accept();
string data = null;
while (true)
{
//если клиент приконнектился - пишем приветствие
Console.WriteLine("Client connected");
handle.Send(System.Text.Encoding.Default.GetBytes("Hello!"));
while (true)
{
try
{
byte[] bytes = new byte[1024];
int i = handle.Receive(bytes);
data = System.Text.Encoding.Default.GetString(bytes, 0, i);//полученная строка
if (data.Length == 0)
{
handle.Send(System.Text.Encoding.Default.GetBytes(""));
}
//в цикле переделываем входящую строку в верхний регистр
else
{
Console.WriteLine("Text rec.: {0}", data);
data = data.ToUpper();//<==
//..и отсылаем обратно в клиент
handle.Send(System.Text.Encoding.Default.GetBytes(data));
if (data == "terminate_client_connection")
{
break;
}
}
}
catch
{
break;
}
}
break;
}
handle.Shutdown(SocketShutdown.Both);
handle.Close();
Console.WriteLine("Client disconnected");
}
}
}
}Thread t1 = new Thread(new ThreadStart(Server)); t1.Start();
Решение задачи: «Серверное приложение, сокеты»
textual
Листинг программы
Thread sub = new Thread(new ThreadStart(SubServ)); sub.Start(handle);