C++ 如何使用c++;网络编程?

C++ 如何使用c++;网络编程?,c++,networking,winsock,poco,qtnetwork,C++,Networking,Winsock,Poco,Qtnetwork,------------------更新日期2015.12.13--------------- 目前,我正在开发一个在windows上具有网络功能的程序 假设有四台PC,我选择一台作为主节点,另一台作为从节点。从节点需要向主节点传递xml文件(仅一次)和一些其他实时信息(例如:每5秒传递一次数据) 我对网络编程一无所知。是否有一个框架可以处理这个问题 至于如何解决这个问题,我有几点我无法选择: 哪个库或框架易于使用?winsocket?POCO?QT-networkframe或其他 我应该关注网

------------------更新日期2015.12.13---------------

目前,我正在开发一个在windows上具有网络功能的程序

假设有四台PC,我选择一台作为主节点,另一台作为从节点。从节点需要向主节点传递xml文件(仅一次)和一些其他实时信息(例如:每5秒传递一次数据)

我对网络编程一无所知。是否有一个框架可以处理这个问题

至于如何解决这个问题,我有几点我无法选择:

  • 哪个库或框架易于使用?
    winsocket
    POCO
    QT-networkframe
    或其他

  • 我应该关注网络的哪个层次?
    socket
    ?还是只使用已经打包的
    HTTP请求
    ,这样就不需要关心socket的实现

  • 由于必须传递一些实时信息,设计该网络功能有什么要点吗


  • 一种可能是将“网络”部分完全抽象出来,并使用许多RPC机制中的一种,因此客户端只需将参数传递给函数,然后不久,在服务器上使用相同的参数调用函数


    举个例子,我已经用过很多次了。最近,我也用它做了一些工作。这两种方法似乎都有效,但节俭显然是其中比较成熟的一种。根据您的需要,还有很多种可能性可供选择。

    有很多方法可供选择。 最简单的方法是不使用网络API本身。 使用文件系统。 从机可以写入服务器,并且一旦从机完成写入,服务器将拾取文件。您可以依靠windows强制执行共享读取/共享写入。如果客户端使用SHARE_NONE创建文件,则在关闭该文件之前,其他任何人都无法打开该文件。只有在客户端断开网络连接、崩溃等情况下,此操作才会失败。更可靠的方法是客户端使用“\server name\sharename\client\u X_TEMP.xml”这样的名称创建文件,当服务器准备好使用该文件时,重命名为“\server name\sharename\server\u PLEASE\u README\u NOW.xml”。服务器将只查找名称正确的文件。 看起来技术含量不高,但它安全、便携、坚固,并且易于使用。因为您不需要任何特殊的API,所以可以用任何可以访问文件系统的语言编写客户机和服务器

    如果要使用直接网络API,可以使用DCOM。它允许您指定一个类似C/C++的接口,供客户端调用,服务器实现。它处理序列化数据和将数据传输到另一台机器的所有复杂性。这是非常灵活的,客户机和服务器可以在同一个进程中,不同的进程在同一台机器上,或者在不同的机器上。(多年来,微软用很多名字来称呼这项技术,“基本”层是“RPC”,然后是COM、D-COM、ActiveX,也许还有其他一些名字

    套接字非常容易设置,并且比DCOM更容易移植,但是它们是相当“原始的”。您需要发明自己的协议来发送数据,因为套接字只是传输数据束

    HTTP只是一个通常通过套接字传输的协议。这里的优势是有许多不同的HTTP库可用,还有许多现成的服务器。例如,IIS可以用来处理传入的请求并自动将它们传递给代码——您可以用多种方式和方法对服务器进行编码rosofts Visual Studio对此有很好的支持


    我没有使用poco或QT,因此我无法发表评论。

    谢谢你的回答。我认为共享文件系统可能不合适。因为我必须每秒传递一些实时信息。你对实现这一要求有什么建议吗?文件系统方法每5秒或更短时间就可以正常工作。但对于实时,你会想要一些东西更直接-就像套接字连接一样。不过,正如Jerry所建议的,如果你仔细地分离出代码中的网络部分,你就可以自由地尝试多种可能性。我会先使用文件系统方法,因为它可以快速、轻松地实现、测试和调试数据处理。然后,尝试DCOM或Goog之类的方法le RPC。(GRPC类似于DCOM,但我认为更简单、更容易学习)。使用原始套接字很难让所有细节都正确。再次感谢。我将尝试文件系统和RPC。感谢您的回答。
    RPC机制
    真的让人大开眼界。RPC机制经常用于这些轻型网络需求程序吗?