Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.09.2015, 15:38   #1
ne4kin
Пользователь
 
Регистрация: 03.12.2010
Сообщений: 16
По умолчанию Асинхронный клиент-сервер проблема

Здравствуйте. Вот уже 3 дня бьюсь над проблемой, решение которой не могу найти. Вообщем, коротко говоря, имеется серверное приложение, которое асинхронно принимает клиентов. Первое, второе подключения проходят нормально, а потом вновь подключенный клиент просто перестает запускаться. Путем точек останова, я вроде как понял что сервер в какой то момент перестает принимать клиентов. Вот вырезки с кода, очень жду помощи, т.к. на этом работа остановилась .

Код:
  // Каждую секунду проверяем подключенных клиентов                        
        private static void TimerConnectClient_Tick(object sender)
        {
            if (listener.Pending())
            {           
                listener.BeginAcceptSocket(new AsyncCallback(OnAccept), listener);              
            }
        }
Код:
// подключился клиент            
        private static void OnAccept(IAsyncResult ar)
        {            
            Socket client = ((TcpListener)ar.AsyncState).EndAcceptSocket(ar);
            var EventArgRecive = new SocketAsyncEventArgs();
            EventArgRecive.SetBuffer(new byte[SizeBufReciveClient], 0, SizeBufReciveClient);
            EventArgRecive.AcceptSocket = client;
            EventArgRecive.Completed += ReciveAsync;
            if (!client.ReceiveAsync(EventArgRecive))
            {
                ReciveAsync(null, EventArgRecive);
            }
        }
Код:
  // пришло сообщение от клиента
        private static void ReciveAsync(object sender, SocketAsyncEventArgs e)
        {
            string result = System.Text.Encoding.Default.GetString(e.Buffer.Where(x => x != 0).ToArray());
 
            if (result.Trim().Length > 1)
            {
                e.SetBuffer(new byte[SizeBufReciveClient], 0, SizeBufReciveClient);
                    case "#1":
                        List<string> listTurbines = new List<string>(turbines.Count);
                        foreach (Turbine t in turbines)
                            if (t.Group.Trim() == Params1)
                                listTurbines.Add(t.GetNameTurbine);
                        SendClient(e.AcceptSocket, listTurbines);
                        break;
                    case "#2":
.............................................
            }
            else
            {
                SendClient(e.AcceptSocket, "0");
            }
         
            try
            {
                if (!e.AcceptSocket.ReceiveAsync(e))
                    ReciveAsync(null, e);
            }
            catch { }
        }

А вот соединение на клиентской части

Код:
    /// <summary>
        /// Проверка соединения с сервером
        /// </summary>
        public static System.Net.Sockets.Socket Connect(System.Net.IPAddress ipClient, System.Net.IPAddress ipServer, int port)
        {
            var EndPointClient = new System.Net.IPEndPoint(ipClient, port);
            var EndPointServer = new System.Net.IPEndPoint(ipServer, port);
            var client = new System.Net.Sockets.Socket(System.Net.Sockets.AddressFamily.InterNetwork, System.Net.Sockets.SocketType.Stream, System.Net.Sockets.ProtocolType.Tcp);
            client.Bind(EndPointClient);
            client.Connect(EndPointServer);
            return client;
        }
После этого, запускается метод, который отправляет запрос, и ждет ответа от сервера. Ответ не приходит.
Подскажите, в чем ошибка
ne4kin вне форума Ответить с цитированием
Старый 08.09.2015, 08:52   #2
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

А весь проект целиком можно потискать? и клиента и сервер.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 09.09.2015, 12:45   #3
ne4kin
Пользователь
 
Регистрация: 03.12.2010
Сообщений: 16
По умолчанию

Цитата:
Сообщение от WorldMaster Посмотреть сообщение
А весь проект целиком можно потискать? и клиента и сервер.
Я не нашел как прикрепить файл. Напишите мне на почту, и я вам отправлю. antnkretv@mail.ru
ne4kin вне форума Ответить с цитированием
Старый 09.09.2015, 12:52   #4
crazy horse
ios developer
Старожил
 
Аватар для crazy horse
 
Регистрация: 16.11.2007
Сообщений: 2,885
По умолчанию

http://pastebin.com/
https://github.com/
Легион их. Зачем файлы прикреплять?
Делайте что хотите, но чтобы через полчаса в лесу было светло, сухо и медведь!
crazy horse вне форума Ответить с цитированием
Старый 09.09.2015, 12:52   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

расширеный режим редактирования откройте.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 09.09.2015, 13:52   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
https://github.com/
Или хотя бы https://gist.github.com
Там не надо ни знаний гита, ни репозиторий создавать. И несколько файлов можно.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
tcp. клиент сервер. проблема с recv. xquant1x C/C++ Сетевое программирование 1 14.09.2014 23:56
C# Net.Sockets (асинхронный клиент-сервер), не возвращается ответ, хотя соединение не пропадает. alextrof94 C# (си шарп) 5 01.08.2014 15:48
Клиент-сервер(асинхронный) - передача файлов teapot C/C++ Сетевое программирование 2 19.08.2011 19:20
Проблема с соединением Клиент-Сервер ImmortalAlexSan Работа с сетью в Delphi 1 13.01.2009 14:45
проблема с клиент-сервер khaz Общие вопросы Delphi 9 14.12.2006 15:16