Networking with C++ [closed]

Jestem nowicjuszem w używaniu C++ , ale mam ogólne pojęcie o jego składni i użyteczności. Chcę się nauczyć, jak komunikować się przez sieci poprzez programowanie C++, ale nie mogę znaleźć żadnych samouczków specjalnie dla C++. Czy ktoś zna jakieś dobre zasoby, aby dowiedzieć się o networkingu z C++ lub od czego powinienem zacząć?

Author: ROMANIA_engineer, 2010-10-02

7 answers

Biorąc pod uwagę twoją nowość w C++, nie zalecałbym budowania bezpośrednio na interfejsach API socketów, chyba że nie znajdziesz odpowiedniej biblioteki do użycia. / Align = "left" / Asio da ci ogromną przewagę i pozwoli Ci zapoznać się z abstrakcjami wyższego poziomu używanymi w programowaniu sieciowym.

Na początku budowania systemu opartego na gniazdach łatwo jest uzyskać coś, co "w pewnym sensie" działa, a następnie poświęcić tygodnie na debugowanie przypadków narożnych, które zdarzają się tylko w rzeczywistych warunkach czasowych i obciążenia. Za pomocą boost::asio poprawnie nie jest cakewalk, nawet jeśli chroni deweloperów przed złożonością obsługi surowych gniazd.

Jeśli celem jest nauczenie się poprawnego korzystania z gniazd surowych (lub innego mechanizmu transportowego, takiego jak RPC), to wykorzystaj próbki i dokumenty online, aby zrozumieć poszczególne interfejsy API BSD lub Winsock - jeśli celem jest jak najszybsze rozwiązanie problemu biznesowego za pomocą wysokiej jakości kodu zarówno po stronie infrastruktury biznesowej, jak i sieciowej, a następnie użyj dobra biblioteka sieciowa. W tym przypadku twoje pytanie wskazuje na chęć nauki, więc korzystanie z biblioteki może nie być najlepszym sposobem na osiągnięcie postawionego celu.

 25
Author: Steve Townsend,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-10-03 13:05:50

Powinieneś sprawdzić te poradniki o:

I .Asio Spójrz tutaj na pytanie dotyczące dokumentacji związanej z Boostem.Asio

 8
Author: user225312,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-11 16:58:32

Jestem pewien, że banda ludzi z C++, którzy gardzą C sposobem robienia rzeczy, znienawidzi mnie za to, ale klasyczne podejście polega na używaniu Berkeley socket API (tak zwanych, ponieważ mają swoje korzenie w BSD). Jeśli celujesz w System Windows, interfejsy API "w dużej mierze zgodne z źródłami, inspirowane przez Uniksa" nazywane są Winsock. Powiedziałbym, że poszukaj w Internecie Socket tutorial , a prawdopodobnie otrzymasz kilka przydatnych informacji. Z odrobiną troski i może #ifdef lub dwa, to nie jest tak trudno stworzyć kod, który działa na Linuksie, BSD, Mac (który zapewnia gniazda BSD) i Windows (z Winsock) przy użyciu tego, co jest wspólne między tymi dwoma interfejsami.

Dla bardziej skłonnych do C++, mniej ludzi w stylu C lub tych, którzy nie lubią kodować przeciwko API systemu operacyjnego, jestem pewien, że istnieją biblioteki C++, które dostarczają owijki i abstrakcje dla tych samych pojęć. Ponieważ Boost wydaje się być dość popularny, powiedziałbym zobaczyć, co mają .

 7
Author: asveikau,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-10-02 19:00:42

Standardowa biblioteka C++ nie ma do tego wsparcia, więc musisz użyć systemowego API lub jakiejś biblioteki abstrakcyjnej, np. QT.

 1
Author: fschmitt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-10-02 18:56:39

C++ jest językiem zorientowanym obiektowo i otwartym, więc można zapożyczyć z innych języków, szczególnie C. Ale oto kilka książek, które mogą pomóc. http://wjyl.nuaa.edu.cn/kfyy/article/C++ % 20network%20programowanie%20volume%201.pdf i być może http://www.cs.wustl.edu / ~ schmidt / PDF / ACE-tutorial. pdf wśród wielu. są też inni.

 1
Author: Olupot Douglas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-28 09:28:45

Być Może Zwiększyć.Asio lub Ten (Unicomm) na jego podstawie będzie odpowiedni dla Ciebie

 0
Author: 4xy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-04 16:06:57
 0
Author: bmeric,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-03 10:13:12