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