Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как остановить сервер из другого потока 
:(
    Опции темы
GoldFinch
Дата 29.5.2010, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: нет
Всего: 26



сабж.
пока что написал так:
Код

using System;

using System.Net;
using System.Net.Sockets;
using System.Threading;

namespace con_ipc_test
{
    public class Server
    {
        private TcpListener server = null;

        public Server()
        {
            (new Thread(new ThreadStart(server_thread))).Start();
        }

        public void kill()
        {
            server.Stop();
        }

        private void server_thread()
        {
            var PORT = 31337;
            try
            {
                server = new TcpListener(new IPAddress(0), PORT);
                server.Start();

                while (true)
                {
                    Console.Write("Waiting for a connection... ");

                    using (var client = server.AcceptTcpClient())
                    {
                        Console.WriteLine("Connected!");

                        using (var stream = client.GetStream())
                        {
                            var buf = new byte[1024];
                            var cbRead = stream.Read(buf, 0, buf.Length);
                            var text = System.Text.Encoding.ASCII.GetString(buf, 0, cbRead);
                            Console.WriteLine("Received: {0}", text);
                        }
                    }
                }
            }
            catch (SocketException e)
            {
                if (e.SocketErrorCode != SocketError.Interrupted)
                    Console.WriteLine("SocketException: {0}", e);
            }
            finally
            {
                server.Stop();
            }
        }
    }

    class Program
    {
        static void Main()
        {
            Console.WriteLine("Hit enter to terminate.\n");

            var srv = new Server();

            Console.Read();
            Console.WriteLine("\nTerminating...");

            srv.kill();
        }
    }
}

PM MAIL ICQ   Вверх
GoldFinch
Дата 29.5.2010, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: нет
Всего: 26



этот код прерывает только accept, но не recv
PM MAIL ICQ   Вверх
jonie
Дата 30.5.2010, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 6
Всего: 118



боюсь что не получится с такой организацией останов сделать - recv висит внутри системы, и стандартными вещами вроде Thread.Abort его не остановить...... думаю надо делать асинхронные операции...


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0706 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.