Несколько вопросов про Windows Sockets 2

Тема в разделе "WASM.WIN32", создана пользователем s3dworld, 30 авг 2011.

  1. s3dworld

    s3dworld Сергей

    Публикаций:
    0
    Регистрация:
    16 мар 2010
    Сообщения:
    387
    Адрес:
    Ртищево
    Всем доброго утра!

    Хочу уточнить несколько деталей при работе с Windows Sockets 2. В первую очередь хочу проконсультироваться по поводу ошибок и как вести себя программе, в случае их возникновения. Сразу весь список вопросов писать не буду, буду выкладывать последовательно. И так, приступим!

    Представим себе такую ситуацию. В системе имеется одна сетевая карта. Компьютер подключён к Интернету через PPPoE. Я запускаю программу и она инициализирует работу с библиотекой Windows Sockets 2 через функцию WSAStartup(). Далее она создаёт два TCP-сокета и обоих подключает через connect() к разным серверам (кстати, до подключения не используется связывание через функцию bind(), так как в случае клиентского сокета, связывание произойдёт автоматически при подключении). Далее уже программа отправляет/принимает данные через эти сокеты двум разным серверам. И на одном из сокетов происходит ошибка в результате выполнения одной из функций Windows Sockets 2. Функция вернула SOCKET_ERROR. Через WSAGetLastError() я получаю код ошибки. Он равен WSAENETDOWN. Пропустим это сообщение через FormatMessage(), я получу:

    Код (Text):
    1. Операция на сокете обнаружила отключение сети.
    Что делать программе? Понятное дело что данному сокету пришёл конец. Вопрос в следующем: можно смело завершать работу с двумя сокетами? Просто я не понимаю суть ошибки. Означает ли она что разорвано соединение с Интернетом или там что-то с сетевой картой стало. Я ведь специально привёл пример с одной сетевой картой. Было бы у меня их две и сокеты прикреплены к разным картам, тогда уже можно было бы продолжить работу другого сокета?

    В чём соль: по сути можно ждать ошибку для каждого сокета. Но я пишу для себя сетевой движок для работы с TCP-сокетами. Он уже практически написан, осталось лишь правильно обрабатывать ошибки. И если пользователь создаст 20 сокетов, я не хочу чтобы ему приходило 20 раз сообщение для каждого сокета, когда можно было бы объединить все эти сообщения в одно - типа накрылась сеть.

    Что вообще означает данная ошибка?
     
  2. s3dworld

    s3dworld Сергей

    Публикаций:
    0
    Регистрация:
    16 мар 2010
    Сообщения:
    387
    Адрес:
    Ртищево
    Извиняюсь что разместил тему в этом разделе, не заметил раздел WASM.NETWORKS. Модератор, перенеси, пожалуйста.
     
  3. s3dworld

    s3dworld Сергей

    Публикаций:
    0
    Регистрация:
    16 мар 2010
    Сообщения:
    387
    Адрес:
    Ртищево
    Создал тему в другом разделе. Эту можно удалить.