Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Сервер принимает сообщения от клиента,но не может отвечать  (Прочитано 1102 раз)
0 Пользователей и 1 Гость смотрят эту тему.
stadibenker
Новенький

ua
Offline Offline

« : 18-09-2014 17:35 » 

Доброго времени суток! Пишу клиент-серверное приложение,используя сокеты MFC. Клиент соединяется с сервером,отправляет сообщение,последние 2 символа которого представляют собой число,в зависимости от которого будет перенаправление на другой сокет(accept). Далее серверу можно слать сообщения,он их будет читать и выводить(тут всё корректно работает). Но ответить почему-то не могу. Нажимаю отправить,но клиент сообщения не получает. В чём может быть дело? Подозреваю,что это из-за отсутствия функции Bind,но я в ней не разобрался,читал справочники,но так и не понял её смысла...и даже не знаю,где её объявлять(и зачем).
Код клиента,думаю,не стоит кидать,так как он вроде работает как следует. Вот код сервера:

Код: (C++)
Server.SetParentDlg(this);
Time.SetParentDlg(this);
Server.Create(5010);
Server.Listen();

Создаю сокет,ставлю на прослушку.

Код: (C++)
void CServerDlg::OnAccept()
{
   Server.Accept(Time);
}

void CServerDlg::OnReceive()
{       CString user,iip;char a[10];
    Time.Receive(a,sizeof(a));
        test=a;UpdateData(FALSE);
        user=a;user=user.Right(2);
        int num;num=_ttoi(user);
        switch(num){
        case 1:{Time.Accept(User1);break;}
        case 2:{Time.Accept(User2);break;}
        case 3:{Time.Accept(User3);break;}
        case 4:{Time.Accept(User4);Beep(5000,850);break;} //При подключении 4го клиента издаёт звук,это для проверки,аналогично в 14 ячейке
        case 5:{Time.Accept(User5);break;}
        case 6:{Time.Accept(User6);break;}
        case 7:{Time.Accept(User7);break;}
        case 8:{Time.Accept(User8);break;}
        case 9:{Time.Accept(User9);break;}
        case 10:{Time.Accept(User10);break;}
        case 11:{Time.Accept(User11);break;}
        case 12:{Time.Accept(User12);break;}
        case 13:{Time.Accept(User13);break;}
        case 14:{Time.Accept(User14);Beep(5000,850);Beep(5000,850);break;}
        case 15:{Time.Accept(User15);break;}
        case 16:{Time.Accept(User16);break;}}
}

Виртуальная функция,где и идёт распределение по сокетам,в зависимости от последних двух символов сообщения от клиента.
Код отправки сообщения клиенту:

Код: (C++)
CString com;

class USER1{ //в классе в будущем будет с десяток функций,команд для клиента
public: MySocket User4;
        void com1(){
                com="beep";
                User4.Send(com,sizeof(com));}};

USER1 user1;

void CServerDlg::OnBnClickedButton2()
{
        user1.com1();
}
« Последнее редактирование: 20-09-2014 21:52 от Вад » Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines