Как мне реализовать одноранговую сеть в C ++? - PullRequest
0 голосов
/ 04 июля 2011

Ранее я реализовывал серверные / серверные сетевые программы на C, но никогда не занимался одноранговыми программами или программированием сокетов на C ++.

Для одноранговой сети, я думаю, мне пришлось бы создавать несколько потоков и управлять входящими и исходящими соединениями, поскольку каждая программа будет работать как клиент и сервер одновременно, верно?

Что было бы хорошим способом реализовать это в C ++? Я считаю, что C ++ изначально не поддерживает многопоточность ...

Ответы [ 3 ]

1 голос
/ 04 июля 2011

Вы не обязаны использовать несколько потоков.Альтернативой является использование одного потока и мультиплексирование сокетов с помощью select () (или poll () или epoll () или etc).

1 голос
/ 04 июля 2011

Возможно, вы захотите заглянуть в библиотеку boost.asio , которая подходит для нескольких соединений сокетов (как потоковых, так и нет ...)

0 голосов
/ 04 июля 2011

Любой код, который будет действителен в C, также допустим в C ++.Таким образом, вы можете использовать тот же API сокетов и тот же API потоков (но обертки Boost действительно могут быть гораздо более удобными).

Также C ++ будет изначально поддерживать многопоточность ближе к концув этом году (стандарт уже написан и ожидается, что ISO проголосует за него в этом году).Конечно, может потребоваться некоторое время, чтобы отобразиться в вашем компиляторе / stdlibc ++ (но gcc / gnu stdlibc ++ уже реализует его, за исключением языковой поддержки локального хранилища потоков (которую он поддерживает, но используя более старый способ, специфичный для компилятора)).Для компиляторов, которые его не поддерживают, версия Boost в любом случае в основном совместима с предлагаемым стандартом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...