Неблок. сокеты (TCP сервер)

Тема в разделе "WASM.NETWORKS", создана пользователем ZeroMemory, 28 апр 2005.

  1. ZeroMemory

    ZeroMemory New Member

    Публикаций:
    0
    Регистрация:
    9 янв 2005
    Сообщения:
    79
    Приветствую господа.

    Помогите плз разобраться с траблой: как реализовать TCP сервер в одном главном потоке.

    Я пробую так:

    socket()

    bind()

    listen()

    WSAAsyncSelect(), чтобы оконная процедура обрабатывала FD_ACCEPT и FD_READ и тем самым не вылазить в др. поток.

    Но... чтото не проходит и WSAGETSELECTEVENT(msg.LParam) в оконной процедуре возвращает много раз FD_ACCEPT... В общем бред получается. Подскажите плз, может сам алгоритм неблок. сокетов я не правильно сделал (раньше только блок. юзал)?

    Заранее благодарен.
     
  2. Sickle

    Sickle New Member

    Публикаций:
    0
    Регистрация:
    11 июл 2003
    Сообщения:
    181
    сорри, что за WSAGETSELECTEVENT? ты ведь зарегистрировал сообщение за сокетом? вот и по приходу этого сообщения проверяй Lparam
     
  3. ZeroMemory

    ZeroMemory New Member

    Публикаций:
    0
    Регистрация:
    9 янв 2005
    Сообщения:
    79
    Sickle

    дак я так и делаю...
     
  4. ZeroMemory

    ZeroMemory New Member

    Публикаций:
    0
    Регистрация:
    9 янв 2005
    Сообщения:
    79
    Фуфф... TCP сервер сделал. Но возникла другая трабла :dntknw:

    Приходит сообщение в оконную процедуру... Через WParam , я получаю описатель сокета - т.е. тут все гуд. НО не знаю как получить адрес клиента sockaddr_in!!! Другими словами стал вопрос - как по описателю сокета получить адресс клиента? Спасибо.
     
  5. ZeroMemory

    ZeroMemory New Member

    Публикаций:
    0
    Регистрация:
    9 янв 2005
    Сообщения:
    79
    я пробовал юзать recvfrom на потоковых сокетах (ТСП) - но не вышло :dntknw:
     
  6. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    > я пробовал юзать recvfrom на потоковых сокетах

    > ТСП) - но не вышло :dntknw:

    и не должно.

    recvfrom это для дейтаграмм. UPD короче
     
  7. ZeroMemory

    ZeroMemory New Member

    Публикаций:
    0
    Регистрация:
    9 янв 2005
    Сообщения:
    79
    kaspersky

    ну я так и понял :)



    В общем все я сделал. Целый день убил :dntknw:. Но все работает клево ;)



    Всем сенкс ж)