C ++ 11에 소켓이 있습니까?
새로운 C ++ 11에 소켓 라이브러리가 포함됩니까? 그래서 뭔가를 할 수 있도록 std::socket
?
어떻게 std::thread
추가 될지 보니 소켓도 추가해야 할 것 같다. C 스타일 소켓은 고통 스럽습니다. 매우 반 직관적 인 느낌입니다.
어쨌든 : C ++ 11에 C ++ 소켓이 있습니까 (구글링했지만 답을 찾을 수 없음)? 그렇지 않다면 이것을 추가 할 계획이 있습니까? 왜 왜 안돼)?
전혀 그렇지 않다. 가까운 장래에 C ++ 표준위원회 는 네트워킹 계층 제안을 개발하는 연구 그룹을 만들었습니다 . 기본 소켓 계층에서 시작하여 그 위에 HTTP / etc 지원을 구축하는 상향식 접근 방식을 사용하는 것처럼 보입니다. 그들은 10 월위원회 회의에서 기본적인 소켓 제안을 발표하려고합니다.
그들이 이것을 C ++ 11에 넣지 않은 이유는 순전히 추측입니다.
이 문제에 대한 내 의견을 원한다면, 그 이유입니다.
특정 기능을 가진 프로그램을 만드는 경우 두 가지 이유 중 하나로 라이브러리를 선택할 수 있습니다. 한 가지 이유는 해당 라이브러리가 코드를 구현하는 데 필요한 작업 을 수행하기 때문입니다 . 다른 하나는 일반적으로 코드를 구현하는 데 도움 이 되는 일 을 하기 때문 입니다.
특정 프로그램의 디자인 std::vector
이 "이 항목 목록을 보관 하려면 a 를 사용해야합니다."라고 말하는 것은 매우 어렵습니다 . 프로그램 의 디자인 은 그다지 구체적이지 않습니다. 웹 브라우저를 만드는 경우가 자사의 탭을 보유하고있는 경우, 브라우저의 아이디어는 상관하지 않는다 std::vector
, std::list
또는 사용자가 만든 개체를. 이제 일부 디자인은 특정 데이터 구조를 강력하게 제안 할 수 있습니다. 그러나 디자인에서 a와 같은 낮은 수준의 std::list
것이 완전히 필수적 이라고 명시 적으로 말하는 경우는 거의 없습니다 .
std::list
거의 모든 프로그램 에서 사용할 수 있습니다 . 수 있듯이 std::vector
, std::deque
등
그러나 웹 브라우저를 만드는 경우 그 디자인 안에 네트워킹이 있습니다. 당신은 있어야 하나 네트워킹 라이브러리를 사용하거나 네트워크 계층을 직접 작성합니다. 아이디어의 기본 요구 사항입니다.
내가 이전 유형에 사용하는 용어는 무엇이든 사용할 수있는 라이브러리를 "유틸리티"라이브러리입니다.
스레딩은 유틸리티 라이브러리입니다. 디자인은 사용자에게 응답 할 필요를 통해 스레딩을 장려 할 수 있지만 선점 형 멀티 스레딩없이 응답 할 수있는 방법이 있습니다. 따라서 대부분의 경우 스레딩은 구현 선택입니다. 따라서 스레딩은 유틸리티입니다.
네트워킹은 없습니다 . 디자인에서 특별히 요구하는 경우에만 네트워킹을 사용합니다. 네트워킹을 프로그램에 덤프하기로 결정한 것이 아닙니다. 구현 세부 사항이 아닙니다. 디자인 요구 사항입니다.
표준 C / C ++ 라이브러리는 유틸리티 만 구현해야한다고 생각합니다. 이것이 내가 XML 파서 등과 같은 다른 무거운 아이디어에 반대하는 이유이기도하다. 다른 라이브러리가 이러한 것들을 갖는 것은 잘못된 것이 아니지만 C와 C ++의 경우에는 좋은 선택이 아니다.
다른 많은 인기 언어가 언어의 일부로 소켓 작업을 지원하기 때문에 그렇게해야한다고 생각합니다 (사용자가 OS 별 API를 사용하도록 강요하지 않음). 로컬 파일을 읽고 쓸 수있는 파일 스트림이 이미있는 경우 소켓으로 데이터를 전송하는 방법이없는 이유를 알 수 없습니다.
C ++ 11에는 소켓이 없습니다. 스레드와 소켓의 차이는 스레드, 주문에 대한 자세한 보증을 포함한다는 것입니다 경우 프로그램이 스레드를 포함한다. 코어가 하나 뿐인 플랫폼의 경우 C ++ 11은 CPU에 추가 코어를 제공하도록 요구하지 않습니다. 반면에 소켓은 이식성있게 구현하기 어렵고 소켓이없는 시스템에서는 정상적으로 실패합니다.
C ++ 0x에는 없습니다. 향후 버전에 추가 할 제안이 있습니다.
C ++ 0x의 새로운 내용의 양은위원회가 모든 것을 철저히 처리 할 시간을 제공하기 위해 제한되어야했습니다.
C ++ 0x에 대한 위키 백과 페이지는 일반적으로 꽤 최신 상태이며 라이브러리 변경 섹션 에는 소켓이 언급되어 있지 않은 것 같습니다.
참고 URL : https://stackoverflow.com/questions/6638213/will-and-should-there-be-sockets-in-c11
'Nice programing' 카테고리의 다른 글
.Split () 후 빠르게 마지막 요소 선택 (0) | 2020.11.29 |
---|---|
Visual Studio에서 지속적으로 "패키지에서 도구 상자 콘텐츠로드"를 가져 오며 시간이 오래 걸립니다! (0) | 2020.11.28 |
mediatype, contenttype 및 mimetype의 차이점은 무엇입니까? (0) | 2020.11.28 |
오픈 소스 신경망 라이브러리 (0) | 2020.11.28 |
android Android 지원 리포지토리 대 Android 지원 라이브러리 대 Google 리포지토리 대 Google Play 서비스의 차이점은 무엇입니까? (0) | 2020.11.28 |