【问题标题】:what is servaddr.sin_addr.s_addr=INADDR_ANY [duplicate]什么是 servaddr.sin_addr.s_addr=INADDR_ANY [重复]
【发布时间】:2014-02-17 11:25:42
【问题描述】:

在socket编程中是做什么的

servaddr.sin_addr.s_addr=INADDR_ANY;

实际上在一个客户端程序中做什么? INADDR_ANY 是什么意思?

我也在网上找到了另一个来源

servaddr.sin_addr.s_addr=inet_addr(argv[1]);

这一步是做什么的?我想我必须输入服务器 ip 作为该客户端想要连接的参数。我说的对吗?

【问题讨论】:

    标签: c sockets


    【解决方案1】:

    在服务器上,INADDR_ANYbind 的一个参数,它告诉套接字侦听所有可用的接口。

    在客户端上,connect 的参数告诉客户端要连接到哪个服务器,但除了作为指定“此主机”的替代方式之外似乎没有任何意义。

    (在这两种情况下,它实际上是一个指向实际传递的struct sockaddr_in 的指针,IP adderss 是该结构的sin_addr.s_addr 字段。正式的函数规范实际上指定了一个struct sockaddr *

    【讨论】:

    • 好的,谢谢,但为什么是 argv[1],这不应该是 argv[0] 吗?因为代码中没有 argv[0] 那怎么可能是 argv[1]?
    • 这是标准 C/C++ - argv[0] 是程序本身的名称,argv[1] 因此是第一个提供的参数。
    • 哇,非常感谢朋友。学到了一些新的有用的东西!
    • 连接的INADDR_ANY 参数只有在操作学习套接字编程时才有意义,其中客户端和服务器恰好位于同一主机中。另外this 评论说,给 INADDR_ANY 一个论点 connect 不是标准做法,尽管没有提供证实该主张的链接。
    • 在客户端上它是没有意义的,除非作为一个本地绑定地址。它当然不能用作连接目标地址。我从未见过任何证据表明它有效。
    猜你喜欢
    • 2018-02-14
    • 2017-10-05
    • 2012-08-18
    • 2019-06-30
    • 2023-04-10
    • 2017-07-15
    • 2011-10-06
    • 2020-04-22
    • 2011-02-22
    相关资源
    最近更新 更多