C++ 关于Unix/Linux套接字编程的良好阅读资料?

C++ 关于Unix/Linux套接字编程的良好阅读资料?,c++,linux,sockets,C++,Linux,Sockets,虽然我没有专业地使用套接字,但我发现它们很有趣。我阅读了Richard Stevens的Unix网络编程的一些部分(我认为这是圣经,因为我问的每个人都提到它),但问题是示例需要一个通用头unp.h,这是一个PIA 你们中的一些人能推荐一本关于Unix/Linux中套接字编程的好读物吗?考虑到我是比较有经验的C/C++程序员。标准参考是W.Richard Stevens的UNIX网络编程。h实际上只是一个助手标题,为了让书中的例子更清楚,它没有做任何特别神奇的事情 要快速启动和运行,很难通过。这里

虽然我没有专业地使用套接字,但我发现它们很有趣。我阅读了Richard Stevens的Unix网络编程的一些部分(我认为这是圣经,因为我问的每个人都提到它),但问题是示例需要一个通用头unp.h,这是一个PIA


你们中的一些人能推荐一本关于Unix/Linux中套接字编程的好读物吗?考虑到我是比较有经验的C/C++程序员。

标准参考是W.Richard Stevens的UNIX网络编程。h实际上只是一个助手标题,为了让书中的例子更清楚,它没有做任何特别神奇的事情


要快速启动和运行,很难通过。

这里有一个关于主题的在线教程。

我使用了


每一步都有大量的客户机和服务器代码示例和解释。

是让您熟悉unix环境以及unix环境中的C编程的好方法,这样您就可以继续进行套接字编程。

除了前面提到的Stevens书籍之外,对于TCP/IP编程问题(尤其是gotchas和常见错误),我发现以下两种方法非常好,而且读取时间相对较短:


之后,您可能需要阅读网络应用程序的源代码。各种linux实用程序和应用程序是一个很好的起点

你可以参考我很久以前在ufl.edu教本科计算机科学课程《计算机网络基础》时写的论文:

这张纸是旧的。我很惊讶,当我狂饮的时候,仍然有半打的参考文献

一些编译器语义和必要的头文件在过去几年中可能已经发生了一些变化,但是设置UDP或TCP套接字以及执行所讨论的基本DNS内容的基础知识今天仍然有效


祝你好运

这似乎是涉水入池或头先入深水的经典难题

FWIW我发现Steven的包装器代码也很烦人,我一直在努力让至少一些示例在我尝试的每个平台上运行。这就是说,包装器隐藏了大部分琐碎的错误处理,这些错误处理可能会重复、乏味,并在一本已经很大的书中占据更多的空间。(公平地说,编辑们可以扔掉书中最后1/4的XTI部分来腾出空间。)

网络编程是一个足够深入的话题,你可以轮流乘海浪和炮弹。已经提到了几个快速入门的好来源,它们将让你通过“哇,我成功了”阶段。但是,当你需要提升到“我需要它,因为我的工作/产品依赖于它,所以我需要它稳健可靠”的阶段时,你会开始欣赏史蒂文斯、他的缺点和所有,因为他预测你当前问题的不可思议的能力


史蒂文的作品中有几章我成功地忽略了多年。但是当我需要它们的时候,我非常感激它们的存在。

由W.Richard Stevens编写的UNIX网络编程第1/2卷是一部传奇

我也写了一份非常详细的文件

此外,Beej的Socket编程指南写得很好,简单易懂,并且是一个明确的建议


无论你读什么,确保编写补充代码。

你也可以考虑更一般的引用, Unix™ 系统编程:通信、并发和线程 作者:Kay A.Robbins,Steven Robbins 普伦蒂斯大厅 国际标准书号:0-13-042411-0


尽管如此,Richard Steven的书仍然是关于这个特定主题的最完整的参考资料

Michael Kerrisk的书(他也是Linux手册页维护者)


unix编程的一切;第57章到第61章都是关于插座的。

所有人都提到过,我相信还有其他好的读物。尝试它的例子是一个PIA。我看到的问题是,示例中给出的头是实际函数的包装,而这不是学习API的方式。最重要的是,他们没有编译(至少在我的系统上,经过无数次反复失败后)你在使用哪个Linux系统,那么?Beej的网页上写着Fedora Core(版本3 IIRC)…+1:这是一本很棒的快速入门指南。应该足够让你编写自己的随机套接字驱动的应用程序。