Здравствуйте! Есть код на C# приложения сервер-клиент.
Вот код сервера:
class ClientObject
spoilerpublic TcpClient client;
public ClientObject(TcpClient tcpClient)
{
client = tcpClient;
}
public void Process()
{
NetworkStream stream = null;
try
{
stream = client.GetStream();
byte[] data = new byte[64]; // буфер для получаемых данных
while (true)
{
// получаем сообщение
StringBuilder builder = new StringBuilder();
int bytes = 0;
do
{
bytes = stream.Read(data, 0, data.Length);
builder.Append(Encoding.Unicode.GetString(data, 0, bytes));
}
while (stream.DataAvailable);
string message = builder.ToString();
Console.WriteLine(message);
Console.WriteLine("/");
// отправляем обратно сообщение в верхнем регистре
message = Console.ReadLine();
data = Encoding.Unicode.GetBytes(message);
stream.Write(data, 0, data.Length);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
if (stream != null)
stream.Close();
if (client != null)
client.Close();
}
}
class Program
spoilerconst int port = 8888;
static TcpListener listener;
static void Main(string[] args)
{
try
{
listener = new TcpListener(port);
listener.Start();
Console.WriteLine("Ожидание подключений...");
TcpClient client = listener.AcceptTcpClient();
ClientObject clientObject = new ClientObject(client);
Thread clientThread = new Thread(new ThreadStart(clientObject.Process));
clientThread.Start();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
if (listener != null)
listener.Stop();
}
}
А вот сам клиент:
class Program
spoilerconst int port = 8888;
const string address = "127.0.0.1";
static void Main(string[] args)
{
Console.Write("Введите свое имя:");
string userName = Console.ReadLine();
TcpClient client = null;
client = new TcpClient(address, port);
NetworkStream stream = client.GetStream();
while (true)
{
Console.Write(userName + ": ");
// ввод сообщения
string message = Console.ReadLine();
message = String.Format("{0}: {1}", userName, message);
// преобразуем сообщение в массив байтов
byte[] data = Encoding.Unicode.GetBytes(message);
// отправка сообщения
stream.Write(data, 0, data.Length);
// получаем ответ
data = new byte[64]; // буфер для получаемых данных
StringBuilder builder = new StringBuilder();
int bytes = 0;
do
{
bytes = stream.Read(data, 0, data.Length);
builder.Append(Encoding.Unicode.GetString(data, 0, bytes));
}
while (stream.DataAvailable);
message = builder.ToString();
Console.WriteLine("Сервер: {0}", message);
}
}
Сама суть проблемы..
Дело в том, что когда я подключаюсь к серверу через клиент, сервер запускает под это соединение поток.. Когда же запускаешь еще один клиент, выходит еще один тред, тем самым из-за этого я не могу единоразово отправить на все клиенты одно и то же сообщение. То есть когда ввожу, сначала отправляется на первый подключенный клиент, когда ввожу второй раз, на второй кидается итд..
Подскажите пож-ста как решить такую проблемку