Writing a Network Client with POCO

แชร์
ฝัง
  • เผยแพร่เมื่อ 28 ต.ค. 2024
  • Networking is often a core requirement for modern applications, but the standard C++ library doesn't yet include any networking support. The Boost libraries have had networking components in the ASIO library, but it looks complicated and filled with details. What if we aren't experts in networking but we need to have networking to support a feature in our application, what options are available to us?
    POCO began as a library of POrtable COmponents, so it covers more than just networking. The networking portion of POCO includes:
    stream, datagram, multicast, server, Unix domain and raw sockets
    multithreaded TCP server framework
    reactor server framework
    HTTP(S) client and server framework
    HTTP Basic and Digest authentication
    NTLM authentication
    JSON Web Token support
    C++ server page compiler
    FTP client
    clients for the email protocols SMTP and POP3
    URI and UUID handling
    HTML forms processing
    HTML template compiler
    MIME multipart messages
    SSL/TLS support based on OpenSSL
    WebSocket client and server
    This month, Richard Thomson will give us an introduction to POCO networking components centered around writing a network client to talk to an NNTP server. We'll look at the main abstractions provided by POCO and how those are used to build a network client to an NNTP server. NNTP (Network News Transfer Protocol) is a stateful network protocol for reading articles from newsgroups, generally referred to as "usenet". Unlike single hosted forums or mailing lists, usenet is a distributed system with no central authority, providing redundancy and resiliency from single point failures (like the host of your favorite forum suddenly deciding they don't want to pay server costs anymore and deleting the whole thing).
    Meetup: www.meetup.com...
    Past topics: utahcpp.wordpr...
    Future topics: utahcpp.wordpr...

ความคิดเห็น • 11

  • @UtahCppProgrammers
    @UtahCppProgrammers  9 หลายเดือนก่อน +1

    Source code: github.com/LegalizeAdulthood/nntp-poco

  • @MasterDigitalinfo
    @MasterDigitalinfo ปีที่แล้ว

    Im a new user of the Poco libraries and im having trouble with the NTP functionality, how do i extract the packet from the variable response in the clas NTPClient?

    • @UtahCppProgrammers
      @UtahCppProgrammers  ปีที่แล้ว +2

      I'm not familiar with that class; I'd suggest asking on stackoverflow as recommended on the POCO project pages
      pocoproject.org/about.html#community

  • @abb1997abb
    @abb1997abb 2 ปีที่แล้ว

    Can i use this software for the TCP based MMORPG game networking ?
    I'm using boost asio but when i use boost asio, packet handler too many time wait for actions, like this problem not exists when i use in standalone Winsock 2, but winsock 2 very confused, i need clean.

    • @UtahCppProgrammers
      @UtahCppProgrammers  2 ปีที่แล้ว +3

      I don't see anything that would prohibit using POCO, but if you have strict timing requirements I'd recommend writing a benchmarking test to see if the library is reducing your message throughput. I haven't done this, so I can't say whether or not the library overhead is significant.

    • @abb1997abb
      @abb1997abb 2 ปีที่แล้ว

      @@UtahCppProgrammers Okay, thanks for the answer/information.

    • @abb1997abb
      @abb1997abb 5 หลายเดือนก่อน

      @@UtahCppProgrammers Dude, I solved the late packet processing problem I was experiencing. If others experience this problem, let us give them information to solve it.
      I built the network system for data exchange for the Windows Game Server with IOCP-based Boost Asio. I said the data was being processed late, I found the reason for the late processing of the data.
      After the data was received, I was assigning the data to a temporary variable such as a temporary char buffer[65535] while reading and then parsing and processing it. Apparently, this was a long process and therefore it was processing late. I fixed this.
      - When the user first logged in to the socket, I created a Circular Buffer. (This buffer have a pool some size, all data when come wroted this buffer, and acted. So anyone dont need wait this no more.)
      - For the fixing memory leakage, i using shared pointers, all connections watched by the system and if any connection has been broked, pointers removing all memory.
      Thanks for answers again.

  • @thegoodtgg
    @thegoodtgg 9 หลายเดือนก่อน

    Is there code repository available?

    • @UtahCppProgrammers
      @UtahCppProgrammers  9 หลายเดือนก่อน

      I've added a pinned comment with a link to the source code.

  • @dibyojyotibhattacherjee897
    @dibyojyotibhattacherjee897 2 ปีที่แล้ว

    Why don't u try clion for once... and also mingw toolchain...

    • @UtahCppProgrammers
      @UtahCppProgrammers  2 ปีที่แล้ว +5

      CLion is a great IDE for developing on Linux, I have used it many times in the past. I prefer ReSharper for C++ and Visual Studio for developing on Windows.
      As for MinGW, it is only a compiler toolchain and not an IDE. Visual Studio Community Edition is available for free with no restrictions, which pretty much eliminates the need for MinGW.