Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C# Вывести все возможные пары целых чисел https://www.cyberforum.ru/ csharp-beginners/ thread1433717.html
Здравствуйте, нужна помощь с задачкой. Необходимо вывести все возможные пары целых чисел, где целые числа заключены в диапазоне от 0 до n (пусть будет 9). При этом первое число в паре должно быть...
C# Перевести функцию с DELPHI
function Parsing(T_, ForS, _T: string): string; var a, b:integer; begin Result := ''; if (T_='') or (ForS='') or (_T='') then Exit; a:=Pos(T_, ForS); if a=0 then Exit else a:=a+Length(T_); ,...
Смена обоев рабочего стола C#
Всем привет. Сегодня с друзьями тестили на Windows 7 и 8 кое-что. В результате выяснилось, что следующий код работает только на восьмёрке. private static extern Int32...
C# Найти обратную матрицу методом Гаусса - ошибки в коде Друзья, помогите, пожалуйста, найти ошибку в программе. Пытаюсь найти обратную матрицу методом Гаусса, но результат не верный уже после прямого хода. Проверяю код на матрице , никак не пойму в чем... https://www.cyberforum.ru/ csharp-beginners/ thread1433654.html
C# Игра жизнь с установкой начальных квадратиков https://www.cyberforum.ru/ csharp-beginners/ thread1433448.html
Помогите пожалуйста с реализацией игры "Жизнь" с установкой начальных живых клеток. у меня есть вариант без установки using System; static class GameLife { private static int Count(int...
C# Как отправить широковещательное сообщение, используя Net.Socket
Как отправлять сообщение не последнему подключившемуся а всем или на выбор ? и как отключить от сервера определенного клиента ? class Program { static void Main(string args) ...
Нужен пример, где отсутствие синхронизации потоков приводит к вычислению неверного результата C#
Не могли бы вы мне помочь составить или найти пример кода, показывающего как отсутствие синхронизации потоков приводит к вычислению неверного результата? Нашел только на Java пример.
C# Несколько цифр для case в switch'e Решил объеденить два условия для case и сделать так: case 1, 3:{ } case2: ... Но меня очень удивило, что компилятор сругался, что нельзя так делать. В чём проблема? https://www.cyberforum.ru/ csharp-beginners/ thread1433306.html
C# Сортировка методом двухпутевых вставок https://www.cyberforum.ru/ csharp-beginners/ thread1433279.html
Ребят,кто-нибудь знает алгоритм сортировки методом двухпутевых вставок?Искал в инете,но ничего толкового не нашел
C# Обход бинарного дерева без рекурсии Всем привет. Помогите пожалуйста. Есть класс BinaryTree. С его помощью создается дерево, реализован рекурсивный обход, и итерационный вывод - метод show. Я писал алгоритм вывода сам. Он получился... https://www.cyberforum.ru/ csharp-beginners/ thread1433233.html
2 / 2 / 2
Регистрация: 08.11.2014
Сообщений: 35
0

В массив выводить данные-id клиента, данные серверу и данные, отправленные сервером

29.04.2015, 09:19. Показов 1408. Ответов 8
Метки (Все метки)

Здравствуйте. Имеется клиент-серверное приложение, вопрос по стороне сервера.
Имеется backgroundworker-bw_clientReceining:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
TcpListener serverSocket = new TcpListener(8888);
            TcpClient clietnSocket = default(TcpClient);
 
 
            serverSocket.Start();
            bw_clientReceining.ReportProgress(1);
            while (true | !bw_clientReceining.CancellationPending)
            {
                counterClient++;
                clietnSocket = serverSocket.AcceptTcpClient();
                bw_clientReceining.ReportProgress(2);
                handleClient client = new handleClient();
                client.startClient(clietnSocket, Convert.ToString(counterClient));
                Thread.Sleep(5000);
                DataClientToServerID.Add("");
                DataClientToServerStatus.Add("");
                DataServerTOClientStatus.Add("");
            }
            clietnSocket.Close();
            serverSocket.Stop();
и есть класс handleClient:
Принимаем новых клиентов в классе:
C#
1
2
3
4
5
6
7
public void startClient(TcpClient inClientSocket, string clientNO)
        {
            this.clientSocket = inClientSocket;
            clientNO = clientNO;
            Thread ctThread = new Thread(doChat);
            ctThread.Start();
        }
так же в классе есть функция общения doChat()-её код опустим


Задача заключается вот в чём:
Хочу в массив выводить данные-ид клиента, данные серверу и данные отправленные сервером.
Смотрите, когда я завожу нового клиента, он в функцию startClient(TcpClient inClientSocket, string clientNO)-передаёт clientNO-то есть я думал это использовать в качестве идентификатора строки массива.

Единственное решение, которое пришло в голову, это создать ещё один backgroundworker-bw_statusUp и в нём бесконечный цикл сделать, где мы будем получать свойство нашего класса. В класс handleClient добавил свойства:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public int ClientNo
        {
            get
            {
                return clientNO;
            }
        }
        public string ClientID
        {
            get
            {
                return clID;
            }
        }

Но я не учёл того, что в backgroundworker-bw_statusUp нет возможножности дотянуться до класса handleClient, так как он в другом backgroundworker потоке создан.
Вопросы:
1. Правильно ли я думаю про то, как вытаскивать данные из потока, или есть какой-то более правильный способ. Если есть способ, подскажите его, а если нет, то подскажите, как дотянуться из потока backgroundworker-bw_statusUp до данных класса в потоке backgroundworker-bw_clientReceining.
2. В случае отключения клиента, как мы отключаем клиента
Код
clientSocket.Close();
Верно?
А как нам остановить именно тот поток, от которого отключился клиент. Не понимаю.

Уважаемые, очень надеюсь на Вашу помощь. Спасибо.

Вернуться к обсуждению:
В массив выводить данные-id клиента, данные серверу и данные, отправленные сервером
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.04.2015, 09:19
Готовые ответы и решения:

Проверка на стороне сервера, что клиент обработал отправленные данные
Есть клиент и есть сервер, общаются по именованому каналу (named pipe) Проблема: нужно сделать...

Как получить данные от клиентов socket сервером?
Вот, что я сделал: IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName()); ...

Описать структуру с полями, считать данные из текстового файла, вывести данные, подсчитать количество
Доброе утро. С C# я знаком весьма посредственно, однако появилась необходимость выполнить на нем...

Возможно ли передавать синхронно данные между клиентом и сервером?
Всем привет. Пытаюсь сделать отдельный сервер для Unity3D. Мне нужно, чтобы клиент передавал данные...

__________________
8
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.