Доброго времени суток! Пишу клиент-серверное приложение,используя сокеты MFC. Клиент соединяется с сервером,отправляет сообщение,последние 2 символа которого представляют собой число,в зависимости от которого будет перенаправление на другой сокет(accept). Далее серверу можно слать сообщения,он их будет читать и выводить(тут всё корректно работает). Но ответить почему-то не могу. Нажимаю отправить,но клиент сообщения не получает. В чём может быть дело? Подозреваю,что это из-за отсутствия функции Bind,но я в ней не разобрался,читал справочники,но так и не понял её смысла...и даже не знаю,где её объявлять(и зачем).
Код клиента,думаю,не стоит кидать,так как он вроде работает как следует. Вот код сервера:
Server.SetParentDlg(this);
Time.SetParentDlg(this);
Server.Create(5010);
Server.Listen();
Создаю сокет,ставлю на прослушку.
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;}}
}
Виртуальная функция,где и идёт распределение по сокетам,в зависимости от последних двух символов сообщения от клиента.
Код отправки сообщения клиенту:
CString com;
class USER1{ //в классе в будущем будет с десяток функций,команд для клиента
public: MySocket User4;
void com1(){
com="beep";
User4.Send(com,sizeof(com));}};
USER1 user1;
void CServerDlg::OnBnClickedButton2()
{
user1.com1();
}