c++ - 网络编程基础知识,需要帮助才能理解 addrinfo/sockaddr_in 结构用法等

标签 c++ windows sockets

我开始学习C/C++网络编程,却卡在了起点。我在编程方面有点菜鸟,但我了解基本的东西,如 C 库、指针、结构等。我找不到关于与 addrinfo/sockaddr_in 结构相关的一些细节的详细解释信息。类似结构的数量很烦人,在线教程也很困惑。作为附加信息,我可以说我正在使用 Visual C++ 2010 Express 在 Windows 上进行编程。我不知道我已经知道的信息是否正确。我认为它是这样工作的:

  1. 不再需要在任何地方手动创建和填充 sockaddr_in,因为函数“getaddrinfo”使用我在 addrinfo 中手动定义的信息为我完成了这项工作,因此 addrinfo 可以替换所有 sockaddr_in。
  2. 似乎 HOSTENT 结构没有用,因为它用于“gethostbyname”函数并且由于“getaddrinfo”而被弃用

现在有一些问题:

“addrinfo”的引入如何改变常用函数的使用 - 现在是否有任何函数采用其他参数,例如 addrinfo 而不是 sockaddr_in 作为它们的一部分?

似乎没有 addrinfo 的旧式编程对初学者更友好,我想我现在只想使用 sockaddr_in,因为我只学习并想制作简单的东西,这是个好主意吗?

请告诉我我的理解是否正确,如果可能的话回答我的问题,欢迎评论或解释。

编辑 由于我没有得到直接的答案来解释我不明白的事情,所以我一直在努力弄清楚它是如何工作的,我可能对这些事情有了更多的了解。

我现在最想知道的是 HOSTENT 结构在“gethostbyname”被弃用后的作用,因为“getaddrinfo”函数使其无用。我想知道细节,因为我想知道我在代码的每一部分都做了什么。

最佳答案

很遗憾,我不会回答您的问题,但是,我完全建议您阅读 Beej 指南,这是一个很好的入门引用:http://beej.us/guide/bgnet/

关于c++ - 网络编程基础知识,需要帮助才能理解 addrinfo/sockaddr_in 结构用法等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18174279/

相关文章:

python - 在用户按下回车键之前获取 STDIN

c - 如何在没有 libcurl 的情况下用 C 发出 HTTP get 请求?

c++ - 类的 += 运算符的规范形式

c++ - 我应该在哪里声明数据库对象

C# 从注册表中获取 SystemRestore 的状态

c# - 如何编写工具,在 Windows 中反转颜色?

C++ 对象生命周期优化

c++ - 函数指针数组的类模板参数推导适用于 clang,但不适用于 gcc

c# - c# 桌面应用程序的最佳安全框架?

python - 在应用程序之间发送 Canvas 数据