Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Проблема с сокетами в MFC

5.9K
08 декабря 2003 года
Sanych33
1 / / 08.12.2003
Написал клиент-серверное приложение, которое служит для получения управления над некоторой программой (что-то типа управляющего мониторинга). Но возникла проблема.
В некоторое случайное время сервер перестает получать сообщения от клиента (обычно от одного какого-нибудь клиента, но бывает и от нескольких)
Делаю вроде бы все правильно, правда через CSocket, но вот интересно, клиент-то получает сообщения от сервера.

Кусок кода приема сообщения от клиента сервером:

Код:
void CSwopSocket::Init()
{
  m_pFile = new CSocketFile(this);
  m_pArchiveIn = new CArchive(m_pFile,CArchive::load);
  m_pArchiveOut = new CArchive(m_pFile,CArchive::store);
}
void CSwopSocket::OnReceive(int nErrorCode)
{
  CSocket::OnReceive(nErrorCode);
  m_pTree->ProcessPendingRead(this);
}
void CITSTreeView::ProcessPendingRead(CSwopSocket *pSocket)
{
  CString ClientIP;
  UINT ClientPort;
  // Получить IP-адрес клиента
  pSocket->GetPeerName(ClientIP,ClientPort);
  // Переслать сообщение
  CMsg msg;
  ReceiveMsg(pSocket,&msg);
  ...
  ...
}
void CITSTreeView::ReceiveMsg(CSwopSocket *pSocket, CMsg *msg)
{
  TRY {
    msg->Serialize(*(pSocket->m_pArchiveIn));
  } CATCH (CFileException, e) {
    msg->m_msgID = CS_CLIENT_OFFLINE;
  } END_CATCH
}
void CMsg::Serialize(CArchive& ar)
{
  if (ar.IsStoring()) {
    ar << m_msgID;
    ar << m_msgText;
  } else {
    ar >> m_msgID;
    ar >> m_msgText;
    ar >> m_strTime;
  }
}


Что здесь делается неправильно?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог