在linux下更容易进行套接字编程的抽象库

时间:2012-09-06 22:22:16

标签: c++ linux sockets

我必须使用以下条件为2个应用程序编写服务器客户端逻辑:

  • 1个应用程序仅发送数据,而其他应用程序仅接收此数据
  • 都是C ++
  • 接收数据的应用程序应该是多平台的,或至少存在于Mac,Linux和Windows下
  • 我必须只交换数值或一组定义明确的结构,数据包具有致命的简单骨架结构

我希望有一个图书馆可以帮助我解决这个问题。

我想强调的是,我必须只使用与套接字编程相关的标题sys/socket.h,而不是其他依赖。

感谢。

3 个答案:

答案 0 :(得分:1)

您的要求有点不一致,因为通常库是依赖项。

满足您其他要求的库:Boost.Asio,http://www.boost.org/doc/libs/1_51_0/doc/html/boost_asio.html和ACE(自适应通信环境),http://www.cs.wustl.edu/~schmidt/ACE.html

答案 1 :(得分:1)

首先,Berkeley套接字界面确实不难使用,尽管现代标准可能有点夸张。但是,如果您真的想要使用像netcat这样的文本I / O更简单一些,那么根本不要进行套接字级编程,而是用简单的进程生成和管道替换它?或者将您的“致命简单”协议作为HTTP事务并在客户端上使用简单的CGI脚本和curl / wget(或libcurl)?

通过网络移动数据有很多简单的方法,不涉及苛刻的C API。选择哪个取决于你想要做什么。

答案 2 :(得分:1)

我个人更喜欢poco而不是boost.asio:http://pocoproject.org/但它仍然是依赖!