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

Ваш аккаунт

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

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

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

Получение данных со стороны сервера

279
02 сентября 2007 года
bave
456 / / 07.03.2004
Пишу на сокетах клиент-серверное приложение:

со стороны сервера прослушиваю 10000 порт. При соединения клиента
на адресс сервера на этот порт - я получаю сокет клиента, спомощью
сообщения FD_ACCEPT и функции accept.
А как потом узнать, что клиент передал данные с помощью send?
В примере msdn просто со стороны сервера recv зациклен, но это как
не хорошо (особенно если учитывать, что клиентов несколько) - может есть какое-нибудь сообщение, по которму можно со стороны сревера recv вызвать...?
334
02 сентября 2007 года
HexEdit
809 / / 27.07.2006
Вот пример, но на FASMе....
Разберешься? :)
353
02 сентября 2007 года
Nixus
840 / / 04.01.2007
Не совсем понял что тебе нужно. Может неблокирующие сокеты?
406
03 сентября 2007 года
vitaly2003s
481 / / 27.07.2004
ну вообщето это делается с помощью отдельных потоков в общем случае. т.е получил на стороне серва сокет клиента,запускаешь отдельный новый поток и передаешь туда сокет где и его и слушаешь в цикле к примеру. а в основном потоке остаешься принимать другие подключения. эта техника для блокирующих сокетов,с неблокирующими немного другая.
279
03 сентября 2007 года
bave
456 / / 07.03.2004
Не блокирующие - это всмысле асинхронные?
Ну я вот с ними и работаю. - поэтому собираюсь всё водном потоке
сделать. Счас тогда буду в осномном цикле одного птока по нескольку
байт с каждого клиента получать - посмотрю, что из этого получится...
406
03 сентября 2007 года
vitaly2003s
481 / / 27.07.2004
Цитата: bave
Не блокирующие - это всмысле асинхронные?
Ну я вот с ними и работаю. - поэтому собираюсь всё водном потоке
сделать. Счас тогда буду в осномном цикле одного птока по нескольку
байт с каждого клиента получать - посмотрю, что из этого получится...



ДА - асинхронные.

279
06 сентября 2007 года
bave
456 / / 07.03.2004
Что-то как то всё равно не получается у меня организовать взамодействие клиента и сервера:

Вообщем после того как клиент соедиеняется, я получаю его сокет и запускаю
новый поток - в этом потоке я сокета клиента пытаюсь получить данные отпрвленные
клиентом с помощью recv - и recv всегда возвращает ошибку: WSAECONNRESET

Т.е. вот так я определяю клиента, кторый соединился:

Код:
if(WSAGETASYNCERROR(lParam))
{
MessageBox(0, "Could not detect client", "Server Error: ", MB_ICONERROR|MB_OK);
return 0L;
}
switch(WSAGETSELECTEVENT(lParam))
{
case FD_ACCEPT:
    {
                int lenght = sizeof(SOCKADDR);
 
    SOCKADDR_IN        clientaddr;
    SOCKET            client;
 
    memset(&clientaddr, 0, sizeof(SOCKADDR_IN));
    client = accept(m_servsock, (LPSOCKADDR)&clientaddr, (LPINT)&lenght);
//....


И вот потом как только вызываю recv(client, ...) - так получаю WSAECONNRESET
Я даже со стороны клиента пытался закцикливать send - всё равно не пашет.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог