Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Позволяют перейти от адреса Internet в форме символов (состояние,в котором он находился в файле / etc / hosts ) к адресу в форме 4-х байтов и наоборот. ⇐ ПредыдущаяСтр 3 из 3
u_long inet_addr (адрес) char *адрес /*адрес в ASCII-символах*/ char *inet_ntoa (inadresse) struct in_addr inadresse; /*адрес в форме целого*/ Считывание и запись Примитивы readv() и writev() позволяют осуществлять считывание и запись c помощью нескольких несмежных буферов. Этим можно пользоваться, например, для записи общего заголовка, находящегося в постоянном буфере и данных, находящихся в переменном буфере. Эти два примитива не характерны для сокетов. Примитивы sendmsg() и recvmsg() позволяют осуществлять считывание и запись в самом общем виде и используются со всеми опциями. Управление окончанием соединения Функция shutdown () позволяет управлять окончанием соединения. int shutdown () (sock, controle) int sock;/*сокет-дескриптор*/ int controle; Аргумент controle может принимать следующие значения: 0: больше нельзя получать данные на сокете; 1: больше нельзя посылать данные на сокет; 2: больше нельзя ни посылать, ни принимать данные на сокет. Определение параметров сокета Параметры сокетов устанавливаются примитивом setsockopt(). Для установки некоторых опций можно использовать также функции fcntl () или ioctl (). Текущие значения параметров можно определить с помощью примитива getsockopt (). Пример:
Протокол UDP. Поскольку для обмена датаграммами не нужно устанавливать соединение, использовать их гораздо проще. Создав сокет с помощью socket и bind, вы можете тут же использовать его для отправки или получения данных. Для этого вам понадобятся функции sendto и recvfrom. int sendto(int sockfd, const void *msg, int len, unsigned int flags,const struct sockaddr *to, int tolen); int recvfrom(int sockfd, void *buf, int len, unsigned int flags, struct sockaddr *from, int *fromlen); Для задания адреса используется структура sockaddr, как и в случае с функцией connect. Функция recvfrom, Получив очередное сообщение, записывает его адрес в структуру, на которую ссылается from, а записанное количество байт - в переменную, адресуемую указателем fromlen. Как мы знаем, аналогичным образом работает функция accept.
Некоторую путаницу вносят присоединённые датаграммные сокеты (connected datagram sockets). Дело в том, что для сокета с типом SOCK_DGRAM тоже можно вызвать функцию connect, а затем использовать send и recv для обмена данными. Нужно понимать, что никакого соединения при этом не устанавливается. Операционная система просто запоминает адрес, который вы передали функции connect, а затем использует его при отправке данных. Обратите внимание, что присоединённый сокет может получать данные только от сокета, с которым он соединён. 10. Напишите сценарий для shell меняющий расширения в именах файлов текущего каталога '.c' на '.cc' Вариант 1. ls *.c | sed 's/\(.*\)\.c/mv "\1\.c" "\1\.cc";/' | sh –x Вариант 2. for f in *.с do expr $f ([^.]*)\.c: | $a a = ‘expr $a + “.cc”‘ mv $f $a done Вариант 3. find./ -maxdepth 1 -mtime 0 -name "*.cc" -exec mv {} {}c \; Вариант 4. Скрипт #!/bin/bash for i in `ls./*.c`; do mv "${i}" "${i}c" done Одна команда Следующая команда переименовывает все файлы в текущем каталоге, меняя первое сочетание ".c" на ".cc". rename.c.cc *.c Недостаток этого способа состоит в том, что если файлы имеют в своём имени сочетание ".c" (не в расширении), то переименование произойдёт неправильно. Подходит для простого переименования файлов в большинстве случаев.
|
|||||||
Последнее изменение этой страницы: 2019-05-20; просмотров: 64; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.149.24.159 (0.004 с.) |