有人可以帮助我理解这段代码中发生了什么吗?

问题描述 投票:0回答:0

我正在开发一个小型 C++ 程序。现在的目标是绑定 TCP 套接字。我目前正在研究 Arch Linux。

这是我当前编写的代码。

#include <iostream>
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>

int main() {

    sockaddr_in sockaddr {};
    sockaddr.sin_family = AF_INET;
    sockaddr.sin_port = 8080;
    sockaddr.sin_addr.s_addr = INADDR_ANY;
    int sockfd = socket(sockaddr.sin_family, SOCK_STREAM, 0);
    bind(sockfd, (struct sockaddr *) &sockaddr, sizeof(INADDR_ANY));
}

绑定函数应该采用以下参数:

  1. int s(套接字文件描述符)
  2. struct sockaddr *name(指向 sockaddr 结构体的指针)
  3. int namelen(套接字地址的长度,以字节为单位)

它几乎看起来像 C 风格的转换,但我们传入了对

sockaddr_in
结构的引用。这是获取结构体,然后对其进行强制转换并取消引用该变量吗?任何帮助了解这里发生的事情将不胜感激。

c++ linux sockets network-programming unix
© www.soinside.com 2019 - 2024. All rights reserved.