首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Windows和Linux环境下用C、C++实现tcp/ip端口的数据收发

如何在Windows和Linux环境下用C、C++实现tcp/ip端口的数据收发
EN

Stack Overflow用户
提问于 2011-12-30 10:55:23
回答 2查看 3.2K关注 0票数 3

我要为windows和linux编写一个跨平台程序: Java程序将发送数据到tcp/ip端口,而C/C++程序将不断侦听tcp/ip端口,当它获得一些数据时,它会做一些工作,并将结果数据发送到另一个tcp/ip端口,现在Java程序将从该端口读取数据并执行一些操作。我更担心的是C/C++部分。你能帮助任何细节或有用的链接或示例代码吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-30 11:03:26

有大量的网络API/库和事件通知机制。由于我假设您刚接触C++,并且不想为了从实现中挤出微秒时间和/或为不同的平台编写不同的代码而真正处理特定于平台的功能,因此我认为您最好的选择是使用Boost ASIO -一个用于网络和低级I/O编程的跨平台C++库。它有一个非常好的文档,大量的例子,并且通常很容易使用。它可以在许多平台上工作,而不需要更改应用程序中的一行代码。它有它的陷阱,但它们不是非常重要的,除非你正在做的事情非常复杂,对性能、内存使用、延迟、吞吐量或以上所有方面都有很多严格的要求。

以防我的假设不正确,有很多选择。其中一些是:

  • libevent -一种在文件描述符上发生特定事件时或在超时后执行回调函数的机制reached
  • epoll -一种用于Linux
  • kqueue的可扩展I/O事件通知机制-一种在MacOS4.1API中引入的可扩展事件通知接口,在NetBSD、OpenBSD、DragonflyBSD和FreeBSD OS API中也受支持(这些人总是重新发明轮子)。

祝好运!

票数 0
EN

Stack Overflow用户

发布于 2011-12-30 11:02:45

我的建议是:boost::asio用于C++跨平台联网,google protocol buffers用于指定跨平台/跨语言协议。

使用boost::asio发送/接收字节的数据,并使用google协议缓冲区将这些字节转换为有用的内容(整数、字符串等)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8675703

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档