SPO_LEC
.pdf
UNIX domain socket
Адрес: путь к файлу с типом socket
Данные: двусторонний pipe
71
BSD socket
Адрес: IP адрес + номер порта
Где хранятся данные?
72
Обмен по TCP
Сервер:
socket() -> bind() -> listen() -> accept() -> recv() -> send() -> close()
Клиент:
socket() -> connect() -> send() -> recv() -> close()
73
Обмен по UDP
Сервер:
socket() -> bind() -> recvfrom() -> sendto() -> close()
Клиент:
socket() -> sendto() -> recvfrom() -> close()
74
socket(2)
int socket( |
|
int domain, |
/* семейство адресов */ |
int type, |
/* тип */ |
int protocol |
/* протокол */ |
); |
|
Функция возвращает номер дескриптора или код ошибки
75
bind(2)
int bind(
int s, /* номер дескриптора сокета*/ const struct sockaddr *name, /* имя */ int namelen /* длина поля имени */
);
Функция возвращает 0 или код ошибки
76
listen(2)
int listen(
int s, /* номер дескриптора сокета */ int backlog /* длина очереди */
);
Функция возвращает 0 или код ошибки
77
accept(2)
int accept( |
|
int s, |
/* номер дескриптора сокета */ |
struct sockaddr *addr, /* адрес клиента */ socklen_t *addrlen /* размер адреса */
);
Функция возвращает номер дескриптора или код ошибки
78
connect(2)
int connect(
int s, /* номер дескриптора сокета */ const struct sockaddr *name, /* имя */ int namelen /* длина поля имени */
);
Функция возвращает 0 или код ошибки
79
Механизм STREAMS
Альтернатива сокетам в System V UNIX:
fopen(3) fclose(3) fputc(3) fgetc(3) fprintf(3) fscanf(3) feof(3) ferror(3)
80
