Сделал многопоточный сервер, подключаясь он создает под пользователя отдельный поток. Все бы ничего, но клиент вначале запрашивает Crossdomain, затем отключает пользователя и снова подключается к серверу уже без запроса Crossdomain.
string client_type = "new";
string data = null;
byte[] bytes;
int bytesRec;
// Начинаем слушать соединения
while (true)
{
// Программа приостанавливается, ожидая входящее соединение
Socket handler = sListener.Accept();
if (client_type == "new")
{
bytes = new byte[1024];
bytesRec = handler.Receive(bytes);
data = Encoding.UTF8.GetString(bytes, 0, bytesRec);
Console.WriteLine("Полученные данные: {0}", data);
if (data == "<policy-file-request/>\0")
{
string cross = "<?xml version=\"1.0\"?><cross-domain-policy><allow-access-from domain=\"*\" to-ports=\"7777\" /></cross-domain-policy>\0";
byte[] msg = Encoding.UTF8.GetBytes(cross);
handler.Send(msg);
client_type = "client";
Console.WriteLine("Отправка CrossDomain");
}
} else {
ClientObject clientObject = new ClientObject(handler);
// создаем новый поток для обслуживания нового клиента
Thread clientThread = new Thread(new
ThreadStart(clientObject.Process));
clientThread.Start();
}
}
Я попробовал сделать так, но это работает только для одного пользователя. Чтобы снова зайти на сервер необходимо его перезапустить.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Первый вопрос: на сайте разработчика DLL есть API, но часть функций в нем не работает (а именно connected()) поэтому вопрос, как узнать что устройство...
Нужно по именам бизнес-сущностей создавать папки и подпапки в них, чтобы названия были максимально близки к оригинальным
Цикл для обнаружения элементаПотом, когда кнопка пропадает, нужно просто выполнить другие действия и т