MFC сервер - клиент

Модераторы: Romeo, Hawk, Absurd, WinMain, DeeJayC

Ответить
Alezis
Сообщения: 98
Зарегистрирован: 16 авг 2004, 00:10
Откуда: Минск
Контактная информация:

MFC сервер - клиент

Сообщение Alezis » 10 мар 2005, 11:45

есть сервер, есть клиент, клиент не хочет коннектиться к серверу, причём GetLastError ничего не дает, а коннект всё равно возвращает 0. Вроде всё правильно сделал.

это клиент жмём кнопочку и должно соединение устанавливаться:

Код: Выделить всё

 int iSent;
    m_sConnectSocet.Create();
   if(m_sConnectSocet.Connect(m_strName,m_iPort))
   {
iSent = m_sConnectSocet.Send(LPCTSTR(m_Account),m_Account.GetLength());
			if(iSent  == SOCKET_ERROR)
			 MessageBox("EOR","EOR",MB_OK|MB_ICONEXCLAMATION );	
			else
			 MessageBox("Send","EOR",MB_OK|MB_ICONEXCLAMATION );	
			
		}else
		{
			

			MessageBox("Connect Error","EOR",MB_OK|MB_ICONEXCLAMATION );	
		}
m_sConnectSocet.Connect(m_strName,m_iPort) всегда равен 0 хотя прослушивающий порт на сервере и m_iPort один и тот же, может ошибка в m_strName, но вроде 127.0.0.1 или "loopback" не знаю....
Или может всё дело в сервере.

DeeJayC
Сообщения: 492
Зарегистрирован: 17 фев 2004, 11:26
Откуда: Ленинград (который Город на Неве)
Контактная информация:

Re: MFC сервер - клиент

Сообщение DeeJayC » 10 мар 2005, 12:40

AfxSocketInit() сделал?
"Особое внимание начинающих аквариумистов хотим обратить на то, что рыбки никогда не спят на спинке!" (c)

viel spass, DeeJayC

Alezis
Сообщения: 98
Зарегистрирован: 16 авг 2004, 00:10
Откуда: Минск
Контактная информация:

Re: MFC сервер - клиент

Сообщение Alezis » 10 мар 2005, 14:38

DeeJayC писал(а):AfxSocketInit() сделал?
Конечно. Как по другому, если бы не сделал выдавало бы ошибку.
Просто не коннектится и всё, может имя сервера не катит или что ещё.
Или может я как то не так понимаю саму концепцию:
Есть сервер у которого есть экземпляр сокета который слушает определённый порт , затем если приходит запрос на соединение , то вызывается метод Accept этого слушающего сокета и передаётся значение нового сокета который и будет отвечать за отсылку-приём пакетов. Причём как слушающий сокет так и второй созданы могут быть от одного класса. В клиенте же нам нужен только один сокет, котогрый непосредственно держит соединение и отвечает за отправку приём пакетов.
Тогда вопрос может ли сокет клиента и сервера быть от разных классов(но родитель один этих классов CAsyncSocet)? По моему может.
Но моё чё то не пашет. Причём GetLastError(); не получает ошибку, вот в чём лажа. Мот у каого есть примерчик попроще чтоб разобраться, только чтобы сервер было - одно приложение, а клиент - другое, ато тута у меня есть из книги но там всё зависит от радиобаттона что это сервер или клиент, короче если есть какие предположения и идеи делитесь, в крайнем случае вывешу код. Спасибо.

Alezis
Сообщения: 98
Зарегистрирован: 16 авг 2004, 00:10
Откуда: Минск
Контактная информация:

Сообщение Alezis » 10 мар 2005, 20:02

Короче всё заработало, ошибка была в том что я создавал сокет в клиенте и коннектился а потом сразу отсылал данные(см.выше.), как только я разнёс эти действия по разным функциям всё заработало, хотя почему так не знаю может что при вызове connect не обрабатывалось событие OnConnect, короче теперь всё пашет.


Теперь вот тока другой вопрос, как сделать чтобы к моему серваку сразу несколько клиентов прилипали. Я так думаю создавать на сервере каждый раз при запросе на соединение новый объект и хранить их в каком нить CPtrArray? Хотя может я не прав.

Ответить