Irá (e deverá) haver 'sockets' em C++11?

o novo C++11 vai conter alguma biblioteca de 'socket'? Para que um pudesse fazer algo mais ou menos?

vendo como std::thread será adicionado, parece que as tomadas também devem ser adicionadas. As tomadas de estilo C são uma chatice... Sentem-se extremamente contra-intuitivos.

de qualquer forma: haverá 'sockets' em C++ no C++11 (pesquisado no Google mas não conseguiu encontrar uma resposta)? Caso contrário, estão a planear acrescentar isto? Por que (/por que não)?

Author: Xeo, 2011-07-10

5 answers

Não, não é. Quanto ao futuro próximo, o Comité de normas C++ criou um grupo de estudo que está a desenvolver uma proposta de camada de rede. Parece que eles estão indo para uma abordagem bottom-up, começando com uma camada de socket básico, em seguida, construir o suporte HTTP/etc em cima disso. Querem apresentar a proposta básica da tomada na reunião do Comité de outubro. Quanto ao porquê de não terem posto isto em C++11, Isso é puramente ... especulativo.
Se queres a minha opinião sobre o assunto, é por esta razão.

Se você está fazendo um programa que faz algo, que tem uma funcionalidade específica para ele, então você pode escolher bibliotecas por uma de duas razões. Uma razão é porque essa biblioteca faz algo que é necessário para implementar o seu código. E o outro é porque ele faz algo que é útilna implementação do código em geral.

É muito difícil para um design para um programa específico dizer: "eu absolutamente preciso usar um std::vector para manter esta lista de itens!"O projeto para um programa não é assim tão específico. Se você está fazendo um navegador web, a idéia de um navegador não se importa se ele mantém suas páginas em um std::vector, std::list, ou um objecto criado pelo utilizador. Agora, algum design pode sugerir fortemente certas estruturas de dados. Mas raramente o design diz explicitamente que algo de baixo nível como um std::list é absolutamente essencial.

std::list pode ser usado em apenas sobre qualquer programa. Como posso std::vector, std::deque, etc.

No entanto, se estiver a fazer um navegador web, engarrafado dentro desse desenho é Rede . Você deve {[21] } usar uma biblioteca de rede ou escrever uma camada de rede você mesmo. É um requisito fundamental da ideia.

O termo que eu uso para o primeiro tipo, para bibliotecas que poderiam ser usadas em qualquer coisa, é bibliotecas "utilitárias".

A roscagem é uma biblioteca de utilidade pública. O Design pode encorajar a roscagem através da necessidade de responder ao usuário, mas há maneiras de ser responsivo sem multitarefa preventiva. Portanto, na maioria dos casos, a roscagem é uma escolha de implementação. Roscagem é, portanto, um utilitário.

A ligação em rede é Não . Só usa redes se o seu design o exigir especificamente. Não se decide simplesmente colocar redes num programa. Não é um detalhe de implementação; é um requisito de design.

É minha opinião que a norma C / C++ a biblioteca só deve implementar utilitários. É também por isso que eu sou contra outras idéias de peso pesado como XML parsers, etc. Não é errado para outras bibliotecas terem essas coisas, mas para C E C++, estas não são boas escolhas.

 51
Author: Nicol Bolas, 2017-05-05 14:55:40

Eu acho que deveria, uma vez que muitas outras linguagens populares suportam operações de socket como parte da linguagem (eles não forçam o usuário a usar qualquer API OS-específico). Se já temos fluxos de arquivos para ler / escrever arquivos locais, não vejo por que não podemos ter algum método de transferência de dados com sockets.

 11
Author: myeviltacos, 2011-07-16 03:15:11

Não haverá tomadas em C++11. A diferença entre threads e sockets é que threads envolve fazer mais garantias sobre ordenação, se o seu programa envolve threads. Para uma plataforma com apenas um núcleo, então C++11 não ordena que o seu CPU tenha um núcleo extra. As tomadas, por outro lado, seriam... difícil de implementar portavelmente e falhar graciosamente em sistemas que não os têm.

 4
Author: Puppy, 2012-01-28 15:08:13

Não haverá no C++0x.existem propostas para adicioná-las numa versão futura.

A quantidade de coisas novas em C++0x teve de ser limitada para dar tempo ao Comité para lidar com tudo isso de forma minuciosa.

 1
Author: Ben Voigt, 2011-07-09 23:43:14

A página do wikipedia para C++0x está normalmente bastante actualizada e a secção sobre as alterações na Biblioteca não parece mencionar os 'sockets'.

 0
Author: Andrew White, 2011-07-09 23:44:14