Анимация
JavaScript


Главная  Библионтека 

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 [ 98 ] 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145

значению системной переменной errno при возникновении ошибки. Метод может быть полезен для асинхронных соединений.

fileno ()

Возвращает файловый дескриптор сетевого соединения (целое число). Может быть полезен совместно с функцией select.select().

getpeername()

Возвращает адрес удаленного узла, с которым установлено соединение. Формат возвращаемого значения зависит от семейства, к которому относится адрес (см. начало раздела). Метод может быть полезен, например, для определения номера порта на другом конце IP соединения.

getsockname()

Возвращает собственный адрес. Формат возвращаемого значения зависит от семейства, к которому относится адрес (см. начало раздела). Метод может быть полезен, например, для определения номера порта.

getsockopt (level, optname [, buflen])

Возвращает значение опции optname. В качестве аргумента optname может быть использована одна из символических констант вида SO *, определенных в модуле. Если аргумент buflen опущен, возвращает целочисленное значение опции. Если аргумент buflen задан, он указывает максимальную длину возвращаемой строки.

listen(backlog)

Ожидает установления сетевого соединения. Аргумент backlog определяет максимальное число соединений в очереди и должен быть не меньше единицы (максимальное значение зависит от системы, обычно равно 5).

makefile ([mode [, bufsize]])

Возвращает файловый объект (типа file, см. раздел 11.7), ассоциированный с сетевым соединением. Файловый объект ссылается на дубликат файлового дескриптора для сетевого соединения, таким образом, файловый объект и объект сетевого соединения могут быть закрыты (в том числе неявно - при достижении нуля количества ссылок на объект) независимо друг от друга. Аргументы mode и bufsize имеют такое же значение, как и для встроенной функции open() .

recv( bufsize [, flags])

Получает данные через сетевое соединение и возвращает их в виде строки. Максимальное количество данных, получаемое за один раз, определяется аргументом bufsize. Описание возможных значений аргумента flags смотрите в документации для системной функции recv() .

recvfrom( bufsize [, flags])

Работает аналогично методу recv(), но возвращает пару (string, address) , где string - строка с полученными данными и address - адрес, с которого данные были посланы. Формат address зависит от семейства, к которому относится адрес (см. начало раздела).



send( string [, flags])

Посылает данные через сетевое соединение. Соединение должно быть установленным. Аргумент flags имеет такое же значение, как и для метода recv(). Возвращает размер посланных данных в байтах.

sendto( string [, flags], address)

Посылает данные на узел с адресом address. Соединение не должно быть установленным. Аргумент flags имеет такое же значение, как и для метода recv() . Возвращает размер посланных данных в байтах. Формат аргумента зависит от семейства, к которому относится адрес (см. начало раздела).

setblocking( flag)

Если flag равен 0, устанавливает режим без блокировки, иначе устанавливает режим с блокировкой. Изначально все сетевые соединения находятся в режиме с блокировкой. В режиме без блокировки, если операция recv() или send() не может быть выполнена немедленно, генерируется исключение error. В режиме с блокировкой вызов методов recv() или send() приведет к блокированию до тех пор, пока операция не будет выполнена.

setsockopt(varlevel, optname, value)

Устанавливает значение опции optname равным value. В качестве аргумента optname может быть использована одна из символических констант вида SO *, определенных в модуле. Аргумент value может быть целым числом или строкой с упакованными данными.

shutdown(how)

Отключает одну или обе половины соединения. Если аргумент how равен 0, в дальнейшем получение данных будет запрещено. Если аргумент how равен 1, запрещена будет передача данных. Если аргумент how равен 2, в дальнейшем будет запрещено как получение, так и передача данных.

Приведем два простых примера, использующих TCP/IP протокол: сервера, посылающего назад полученные данные (обслуживая только одного клиента), и клиента, его использующего. Обратите внимание, что сервер должен вызвать последовательно методы socket() , bind() , listen() , accept() (возможно повторяя вызов accept() , если необходимо обслуживать несколько клиентов), в то время как клиенту необходимо выполнить только socket() , connect() . Кроме того, сервер применяет методы send() и recv() не к объекту, ожидающему соединения, а к новому объекту, возвращаемому методом accept() .

# Сервер import socket

# Локальный узел HOST =

# Произвольный непривилегированный порт PORT = 50007



21.18. select - ожидание завершения ввода/вывода 313

s = socket.socket(socket.AF INET, socket.SOCK STREAM)

s.bind((HOST, PORT))

s.listen(1)

conn, addr = s.accept()

print Подсоединились с адреса, addr

while 1:

data = conn.recv(1024)

if not data: break

conn.send(data) conn.closeO

# Клиент import socket

# Удаленный узел HOST = daring.cwi.nl

# Тот же порт, что используется сервером PORT = 50007

s = socket.socket(socket.AF INET, socket.SOCK STREAM)

s.connect((HOST, PORT))

s.send(Hello, world)

data = s.recv(1024)

s.closeO

print Полученные данные:, data

21.18 select - ожидание завершения ввода/вывода

Этот модуль предоставляет доступ к системным функциям select() и poll() . Заметим, что в Windows функция select() работает только для сетевых соединений. В UNIX средства, предоставляемые модулем, работают также с другими типами файлов, в частности, каналами. Однако эти средства не могут быть использованы для определения увеличения в размерах обычного файла.

error

Исключения этого класса генерируются при возникновении различных ошибок. В качестве аргументов при инициализации используются номер системной ошибки и соответствующая ему поясняющая строка.

select (iwtd, owtd, ewtd [, timeout])

Первые три аргумента - списки, которые могут содержать файловые дескрипторы или объекты с методом fileno() , возвращающим файловый дескриптор. iwtd - список объектов для ввода, owtd - для вывода и ewtd - для исключительных ситуаций (вывода ошибок). Аргумент timeout указывает максимальное



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 [ 98 ] 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145