我开始学习C / C ++网络编程,但我一开始就陷入困境。我在编程方面很有点,但我理解基本的东西,比如C库,指针,结构等等。我找不到关于addrinfo / sockaddr_in structs相关细节的详细解释信息。类似结构的数量令人讨厌,在线教程很混乱。作为附加信息,我可以告诉我,我正在使用visual c ++ 2010 express在windows上编程。我不知道我已经知道的信息是否正确。我认为它的工作原理如下:
现在有些问题:
如何引入“addrinfo”改变常用函数的使用 - 现在任何函数都会使用另外的参数,例如addrinfo而不是sockaddr_in作为它们的一部分吗?
似乎没有addrinfo的旧式编程更适合初学者,我想我现在只想使用sockaddr_in,因为我只学习并想制作简单的东西,这是个好主意吗?
请告诉我,如果我的理解是正确的,并尽可能回答我的问题,欢迎提出意见或解释。
修改 因为我没有直接解答我不明白的事情,所以我一直在努力弄清楚它是如何工作的,我可能会更多地了解这些事情。
我最想知道的是在“gethostbyname”被弃用之后HOSTENT struct的角色,因为“getaddrinfo”函数使它变得无用。我想知道细节,因为我想知道我在代码的每个部分做了什么。
答案 0 :(得分:0)
我很遗憾不会回答你的问题,但是,我完全建议你阅读Beej指南,这是一个很好的参考,以一种欢乐的方式开始:http://beej.us/guide/bgnet/
答案 1 :(得分:0)
Berkeley Socket API已有30年历史(1983年出生)。所以它充满了很多东西。 Windows Socket API是一个多次迭代的“bsd-ish”。或者,换句话说,你正在开始一些你可能不需要的兔子洞。
如果你真的想了解API的演变,你实际上将不得不转向书籍 - 很可能是Steven的“Unix网络编程”,然后阅读关于WinSock移植的资料。但是没有一个明确的来源,因为Windows不是透明的,而过去10年左右的MS在保持开发人员充分知情方面一直不完整(这就是一个例子)。
但是,如果您真正想要做的是了解在网络中移动数据包的实际情况,而不是所涉及的结构的细节,您可能希望首先查看更高级别的API,例如“ libevent“(不幸的是,非常喜欢)或”ZeroMQ“或”AMQP“(rabbitmq或Apache qpid)。
答案 2 :(得分:0)
好的,我不确定你在寻找答案。所以我会尝试采取一般建议路线。我去年完成了一个项目,然后我走下了winsock路线,虽然我确信有很多新的方法我发现我喜欢winsock / sockaddr_in的东西(尽管我在编程的任何方面都不是大师)。我基本上从一个简单的服务器/客户端对开始,允许两个人通过ad-hoc网络聊天。我发现sockaddr_in结构足够直观,可以使用。如果您想从较小的规模开始,可以通过将客户端端口设置为环回IP并让客户端连接到此套接字(可以通过线程从同一个应用程序中连接,也可以单独使用)将服务器/客户端置于一台计算机上您的客户端和服务器的应用程序)。让你的服务器监听连接并发送一个简单的“成功”字符串或其他东西。我从youtube上发现的那个人那里得到了大部分这些想法(震惊我知道!)这是一个link。希望这可以帮助。快乐的编码!