Мне нужна помощь в понимании функции привязки в программировании сокетов C - PullRequest
0 голосов
/ 26 мая 2020

Я пытаюсь понять сокеты, поэтому изучаю его на C. Это код сервера.

#include <stdio.h>
#include <stdlib.h>

#include <sys/types.h>
#include <sys/socket.h>

#include <netinet/in.h>

int main() {

    char server_message[255] = "You have reached the server!";

    //create server socket
    int server_socket;
    server_socket = socket(AF_INET, SOCK_STREAM, 0);

    //define server addr
    struct sockaddr_in server_address;
    server_address.sin_family = AF_INET;
    server_address.sin_port = htons(9002);
    server_address.sin_addr.s_addr = INADDR_ANY;

    //Bind socket to IP and Port
    bind(server_socket, (struct sockaddr*) &server_address, sizeof(server_address));

    listen(server_socket, 5);

    int client_socket;
    client_socket = accept(server_socket, NULL, NULL);

    //send message
    send(client_socket, server_message, sizeof(server_message), 0);

    //close socket
    close(server_socket);

    return 0;
}

В функции привязки эта часть необходима для указания адреса.

(struct sockaddr*) &server_address

Я прочитал справочную страницу, и она говорит, что она должна таким образом, код тоже выполняется, но я не понимаю этого синтаксиса. Что происходит в этой части кода. Я знаю, что * используется для объявления указателей, а & относится к адресу памяти переменной. Я просто не могу собрать все вместе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...