πŸ“Š
Python Docs
  • Бтандартная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Python
  • ΠžΠ±Ρ‰Π΅Π΅ описаниС
    • Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅
    • ОглавлСниС
    • Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ ΠΏΠΎ порядку
    • Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ ΠΏΠΎ Π°Π»Ρ„Π°Π²ΠΈΡ‚Ρƒ
  • ВстроСнныС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹
    • ВстроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
      • abs ()
      • open ()
    • ВстроСнныС Ρ‚ΠΈΠΏΡ‹
    • ВстроСнныС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ
  • ΠœΠΎΠ΄ΡƒΠ»ΠΈ стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ
    • ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° тСкста
      • string
      • re
        • Бинтаксис рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ
        • Π‘ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ модуля
          • re.match ()
        • ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ шаблона Pattern
        • ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ совпадСния Match
        • ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ
      • difflib
      • textwrap
      • unicodedata
      • stringprep
      • readline
      • rlcompleter
    • Π”Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅
      • struct
        • struct.error
        • struct.pack ()
        • struct.pack_into ()
        • struct.unpack ()
        • struct.unpack_from ()
        • struct.iter_unpack ()
        • struct.calcsize ()
        • struct.Struct
        • struct.Struct.pack ()
        • struct.Struct.pack_into ()
        • struct.Struct.unpack ()
        • struct.Struct.unpack_from ()
        • struct.Struct.iter_unpack ()
        • struct.Struct.format
        • struct.Struct.size
      • codecs
    • Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…
      • datetime
      • calendar
        • calendar.Calendar
          • Calendar.timegm ()
        • calendar.TextCalendar
        • calendar.HTMLCalendar
        • calendar.LocaleTextCalendar
        • calendar.LocaleHTMLCalendar
        • Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ calendar
      • collections
      • collections.abc
      • heapq
      • bisect
      • array
      • weakref
      • types
      • copy
      • pprint
      • reprlib
      • enum
        • Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ модуля
          • enum.IntEnum
        • Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Enum
    • ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ
      • numbers
      • math
      • cmath
      • decimal
      • fractions
      • random
      • statistics
    • Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ
      • itertools
      • functools
        • functools.cache()
        • functools.cached_property()
        • functools.cmp_to_key()
        • functools.lru_cache()
        • functools.total_ordering
        • functools.partial()
        • functools.partialmethod()
        • functools.reduce()
        • functools.singledispatch
        • functools.singledispatchmethod()
        • functools.update_wrapper()
        • functools.wraps()
        • ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ partial
      • operator
    • Доступ ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ ΠΈ ΠΏΠ°ΠΏΠΊΠ°ΠΌ
      • pathlib
      • os.path
        • os.path.abspath ()
        • os.path.basename ()
        • os.path.dirname ()
        • os.path.exists ()
        • os.path.expanduser ()
        • os.path.expandvars ()
        • os.path.getsize ()
        • os.path.isfile ()
        • os.path.isdir ()
        • os.path.islink ()
        • os.path.join ()
        • os.path.normcase ()
        • os.path.normpath ()
        • os.path.realpath ()
        • os.path.split ()
        • os.path.splitext ()
      • fileinput
      • stat
      • filecmp
      • tempfile
      • glob
        • glob.glob ()
      • fnmatch
        • fnmatch.fnmatch ()
        • fnmatch.fnmatchcase ()
        • fnmatch.filter ()
        • fnmatch.translate ()
      • linecache
      • shutil
        • shutil.rmtree ()
        • shutil.chown ()
    • Π₯Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…
      • pickle
        • HIGHEST_PROTOCOL
        • DEFAULT_PROTOCOL
        • dump ()
        • dumps ()
        • load ()
        • loads ()
        • PickleError
        • PicklingError
        • UnpicklingError
      • copyreg
      • shelve
      • marshal
      • dbm
      • sqlite3
    • Π‘ΠΆΠ°Ρ‚ΠΈΠ΅ ΠΈ Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…
      • zlib
      • gzip
      • bz2
      • lzma
      • zipfile
      • tarfile
    • Π€ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ Ρ„Π°ΠΉΠ»ΠΎΠ²
      • csv
      • configparser
      • netrc
      • xdrlib
      • plistlib
    • ΠšΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ слуТбы
      • hashlib
      • hmac
      • secrets
    • ΠžΠ±Ρ‰ΠΈΠ΅ слуТбы ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы
      • os
        • os.error
        • os.name ()
        • ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ процСсса
          • os.environ
          • os.fsencode ()
          • os.fsdecode ()
          • os.PathLike
          • os.getenv ()
          • os.getenvb ()
          • os.getpid ()
          • os.getppid ()
          • os.putenv ()
          • os.uname ()
          • os.unsetenv ()
        • Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°
          • os.fdopen ()
        • ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΌΠΈ дСскрипторами
          • os.close ()
          • os.dup2 ()
          • os.fstat ()
          • os.fsync ()
          • os.isatty ()
          • os.lseek ()
          • os.SEEK_SET
          • os.SEEK_CUR
          • os.SEEK_END
          • os.open ()
          • os.openpty ()
          • os.pipe ()
          • os.read ()
          • os.write ()
        • Π€Π°ΠΉΠ»Ρ‹ ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ
          • os.chdir ()
          • os.chmod ()
          • os.chown ()
          • os.getcwd ()
          • os.listdir ()
          • os.lstat ()
          • os.mkfifo ()
          • os.remove ()
          • os.rename ()
          • os.replace ()
          • os.rmdir ()
          • os.scandir ()
          • os.stat ()
          • os.stat_result
          • os.supports_dir_fd
          • os.supports_fd
          • os.supports_follow_symlinks
          • os.unlink ()
          • os.walk ()
        • Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ процСссами
          • os.execl ()
          • os.execle ()
          • os.execlp ()
          • os.execlpe ()
          • os.execv ()
          • os.execve ()
          • os.execvp ()
          • os.execvpe ()
          • os._exit ()
          • os.fork ()
          • os.kill ()
          • os.popen ()
          • os.spawnl ()
          • os.P_NOWAIT
          • os.startfile ()
          • os.system ()
          • os.wait ()
          • os.waitpid ()
          • os.waitstatus_to_exitcode ()
          • os.WNOHANG
        • Π Π°Π·Π½Ρ‹Π΅ слуТбы ОБ
          • os.curdir
          • os.pardir
          • os.sep
          • os.altsep
          • os.pathsep
          • os.linesep
      • io
        • ВысокоуровнСвый интСрфСйс модуля
          • io.DEFAULT_BUFFER_SIZE
        • io.IOBase
          • io.IOBase.close ()
          • io.IOBase.fileno ()
          • io.IOBase.flush ()
          • io.IOBase.isatty ()
          • io.IOBase.readline ()
          • io.IOBase.readlines ()
          • io.IOBase.seek ()
          • io.IOBase.writelines ()
        • io.RawIOBase
          • io.RawIOBase.read ()
          • io.RawIOBase.readall ()
          • io.RawIOBase.readinto ()
          • io.RawIOBase.write ()
        • io.BufferedIOBase
          • io.BufferedIOBase.read ()
          • io.BufferedIOBase.write ()
        • io.FileIO
        • io.BytesIO
          • io.BytesIO.getvalue ()
        • io.BufferedReader
          • io.BufferedReader.read ()
        • io.BufferedWriter
          • io.BufferedWriter.flush ()
          • io.BufferedWriter.write ()
        • io.BufferedRandom
        • io.BufferedRWPair
        • io.TextIOBase
          • io.TextIOBase.read ()
          • io.TextIOBase.readline ()
          • io.TextIOBase.seek ()
          • io.TextIOBase.tell ()
          • io.TextIOBase.write ()
        • io.TextIOWrapper
        • io.StringIO
          • io.StringIO.getvalue ()
      • time
        • Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ time
          • time.asctime ()
          • time.ctime ()
          • time.gmtime ()
          • time.localtime ()
          • time.mktime ()
          • time.sleep ()
          • time.strftime ()
          • time.strptime ()
          • time.struct_time
          • time.time ()
        • ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Ρ‹ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° часов
        • ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Ρ‹ часового пояса
      • argparse
      • getopt
      • logging
      • logging.config
      • logging.handlers
      • getpass
      • curses
      • curses.textpad
      • curses.ascii
      • curses.panel
      • platform
      • errno
      • ctypes
    • ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅
      • threading
        • ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Thread
        • ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Lock
        • ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ RLock
        • ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Condition
        • ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Semaphore
        • ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Event
        • ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Timer
        • ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Barrier
      • multiprocessing
      • multiprocessing.shared_memory
      • concurrent
      • concurrent.futures
      • subprocess
        • subprocess.PIPE
        • subprocess.Popen
        • Popen.wait ()
        • Popen.communicate ()
        • Popen.args
        • Popen.stdin
        • Popen.stdout
        • Popen.stderr
        • Popen.pid
        • Popen.returncode
        • subprocess.call ()
      • sched
      • queue
        • queue.Queue
        • queue.LifoQueue
        • queue.PriorityQueue
        • queue.SimpleQueue
        • queue.Empty
        • queue.Full
        • Queue.qsize ()
        • Queue.empty ()
        • Queue.full ()
        • Queue.put ()
        • Queue.put_nowait ()
        • Queue.get ()
        • Queue.get_nowait ()
        • Queue.task_done ()
        • Queue.join ()
        • SimpleQueue.qsize ()
        • SimpleQueue.empty ()
        • SimpleQueue.put ()
        • SimpleQueue.put_nowait ()
        • SimpleQueue.get ()
        • SimpleQueue.get_nowait ()
      • _thread
        • _thread.error
        • _thread.LockType
        • _thread.start_new_thread ()
        • _thread.interrupt_main ()
        • _thread.exit ()
        • _thread.allocate_lock ()
        • _thread.get_ident ()
        • _thread.get_native_id ()
        • _thread.stack_size ()
        • _thread.TIMEOUT_MAX
        • lock.acquire ()
        • lock.release ()
        • lock.locked ()
      • _dummy_thread
      • dummy_threading
      • contextvars
    • Π‘Π΅Ρ‚Π΅Π²ΠΎΠ΅ ΠΈ мСТпроцСссноС взаимодСйствиС
      • asyncio
        • ΠšΡ€Π°Ρ‚ΠΊΠΈΠΉ список API
      • socket
        • БСмСйство сокСтов
          • AF_UNIX
          • AF_INET
          • AF_INET6
          • AF_NETLINK
          • AF_TIPC
          • AF_CAN
          • PF_SYSTEM
          • AF_BLUETOOTH
          • AF_ALG
          • AF_VSOCK
          • AF_PACKET
          • AF_QIPCRTR
          • IPPROTO_UDPLITE
        • Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ сокСтов
          • socket.error
          • socket.herror
          • socket.gaierror
          • socket.timeout
        • ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Ρ‹ сокСтов
          • socket.AF_UNIX
          • socket.AF_INET
          • socket.AF_INET6
          • socket.SOCK_STREAM
          • socket.SOCK_DGRAM
          • socket.SOCK_RAW
          • socket.SOCK_NONBLOCK
          • socket.SOCK_CLOEXEC
          • socket.AF_CAN
          • socket.CAN_BCM
          • socket.CAN_ISOTP
          • socket.CAN_J1939
          • socket.AF_PACKET
          • socket.AF_RDS
        • Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ сокСтов
          • socket.socket ()
          • socket.create_connection ()
          • socket.fromfd ()
          • socket.close ()
          • socket.getaddrinfo ()
          • socket.getfqdn ()
          • socket.gethostbyname ()
          • socket.gethostbyname_ex ()
          • socket.gethostname ()
          • socket.gethostbyaddr ()
          • socket.getnameinfo ()
          • socket.getprotobyname ()
          • socket.getservbyname ()
          • socket.getservbyport ()
          • socket.ntohl ()
          • socket.htonl ()
          • socket.getdefaulttimeout ()
          • socket.setdefaulttimeout ()
        • ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ сокСтов
          • socket.accept ()
          • socket.bind ()
          • socket.close ()
          • socket.connect ()
          • socket.fileno ()
          • socket.getpeername ()
          • socket.listen ()
          • socket.makefile ()
          • socket.recv ()
          • socket.send ()
          • socket.sendall ()
          • socket.setblocking ()
          • socket.settimeout ()
          • socket.shutdown ()
          • socket.type
      • ssl
      • select
        • Атрибуты модуля
          • select.select ()
        • ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ опроса devpoll
        • ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ epoll
        • ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ опроса poll
        • ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ kqueue
        • ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ kevent
      • selectors
      • asyncore
      • asynchat
      • signal
        • ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Ρ‹ модуля signal
          • signal.SIG_DFL
          • signal.SIG_IGN
          • signal.SIGABRT
          • signal.SIGALRM
          • signal.SIGBREAK
          • signal.SIGCHLD
          • signal.SIGFPE
          • signal.SIGILL
          • signal.SIGINT
          • signal.SIGPIPE
          • signal.SIGSEGV
          • signal.SIGTERM
          • signal.SIGUSR1
          • signal.SIGUSR2
          • signal.CTRL_C_EVENT
          • signal.CTRL_BREAK_EVENT
          • signal.SIG_BLOCK
          • signal.SIG_UNBLOCK
          • signal.SIG_SETMASK
        • Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ модуля signal
        • Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ модуля signal
          • signal.alarm ()
          • signal.getsignal ()
          • signal.strsignal ()
          • signal.valid_signals ()
          • signal.pause ()
          • signal.raise_signal ()
          • signal.pthread_kill ()
          • signal.pthread_sigmask ()
          • signal.signal ()
          • signal.sigpending ()
          • signal.sigwait ()
          • signal.sigwaitinfo ()
          • signal.sigtimedwait ()
      • mmap
    • ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Ρ…
      • email
      • json
      • mailcap
      • mailbox
      • mimetypes
      • base64
      • binhex
      • binascii
      • quopri
      • uu
    • ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° упорядочСнной Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ
      • html
      • html.parser
      • html.entities
      • ΠœΠΎΠ΄ΡƒΠ»ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ XML
      • xml.etree.ElementTree
      • xml.dom
      • xml.dom.minidom
      • xml.dom.pulldom
      • xml.sax
      • xml.sax.handler
      • xml.sax.saxutils
      • xml.sax.xmlreader
      • xml.parsers.expat
    • Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹
      • webbrowser
      • cgi
      • cgitb
      • wsgiref
      • urllib
      • urllib.request
      • urllib.response
      • urllib.parse
      • urllib.error
      • urllib.robotparser
      • http
      • http.client
      • ftplib
      • poplib
      • imaplib
      • nntplib
      • smtplib
      • smtpd
      • telnetlib
      • uuid
      • socketserver
      • http.server
      • http.cookies
      • http.cookiejar
      • xmlrpc
      • xmlrpc.client
      • xmlrpc.server
      • ipaddress
    • ΠœΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Π΄ΠΈΠ° слуТбы
      • audioop
      • aifc
      • sunau
      • wave
      • chunk
      • colorsys
      • imghdr
      • sndhdr
      • ossaudiodev
    • Π˜Π½Ρ‚Π΅Ρ€Π½Π°Ρ†ΠΈΠΎΠ½Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡ
      • gettext
      • locale
    • ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ
      • turtle
      • cmd
      • shlex
    • ГрафичСскиС интСрфСйсы ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ с Tk
      • tkinter
      • tkinter.ttk
      • tkinter.tix
      • tkinter.scrolledtext
      • IDLE
      • Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ графичСских интСрфСйсов
    • Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ
      • typing
      • pydoc
      • doctest
      • unittest
      • unittest.mock
      • 2to3
      • test
      • test.support
      • test.support.script_helper
    • ΠžΡ‚Π»Π°Π΄ΠΊΠ° ΠΈ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅
      • Π’Π°Π±Π»ΠΈΡ†Π° событий Π°ΡƒΠ΄ΠΈΡ‚Π°
      • bdb
      • faulthandler
      • pdb
      • ΠŸΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠΈ Python
      • timeit
      • trace
      • tracemalloc
    • Π£ΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° ΠΈ распространСниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ
      • distutils
      • ensurepip
      • venv
      • zipapp
    • Π‘Π»ΡƒΠΆΠ±Ρ‹ срСды выполнСния Python
      • sys
        • sys.argv
        • sys.executable
        • sys.exit ()
        • sys.getdefaultencoding ()
        • sys.getfilesystemencoding ()
        • sys.path
        • sys.platform
        • sys.setcheckinterval ()
        • sys.setswitchinterval ()
        • sys.stdin, sys.stdout, sys.stderr
        • sys.unraisablehook ()
      • sysconfig
      • builtins
      • __main__
      • warnings
      • dataclasses
      • contextlib
      • abc
      • atexit
      • traceback
      • __future__
      • gc
      • inspect
      • site
    • ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρ‹ Python
      • code
      • codeop
    • Π˜ΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ
      • zipimport
      • pkgutil
      • modulefinder
      • runpy
      • importlib
      • importlib.metadata
    • Π‘Π»ΡƒΠΆΠ±Ρ‹ языка Python
      • parser
      • ast
      • symtable
      • symbol
      • token
      • keyword
      • tokenize
      • tabnanny
      • pyclbr
      • py_compile
      • compileall
      • dis
      • pickletools
    • Π Π°Π·Π½Ρ‹Π΅ слуТбы
      • formatter
    • Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ слуТбы MS Windows
      • msilib
      • msvcrt
        • msvcrt.kbhit ()
        • msvcrt.getch ()
        • msvcrt.getche ()
        • msvcrt.putch ()
      • winreg
      • winsound
    • Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ слуТбы Unix
      • posix
      • pwd
      • spwd
      • grp
      • crypt
      • termios
      • tty
      • pty
      • fcntl
      • pipes
      • resource
      • nis
      • syslog
    • Π—Π°ΠΌΠ΅Π½Π΅Π½Π½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ
      • optparse
      • imp
    • НСдокумСнтированныС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ
      • Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹
Powered by GitBook
On this page
  • Π‘Π΅Ρ‚Π΅Π²ΠΎΠΉ интСрфСйс Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня
  • БСмСйство сокСтов
  • Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ модуля
  • Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ
  • ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Ρ‹
  • Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ
  • ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ сокСтов
  • ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚Π°ΠΉΠΌ-Π°ΡƒΡ‚ΠΎΠ² сокСтов
  • Π’Π°ΠΉΠΌ-Π°ΡƒΡ‚Ρ‹ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ connect
  • Π’Π°ΠΉΠΌ-Π°ΡƒΡ‚Ρ‹ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ accept
  • ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

Was this helpful?

  1. ΠœΠΎΠ΄ΡƒΠ»ΠΈ стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ
  2. Π‘Π΅Ρ‚Π΅Π²ΠΎΠ΅ ΠΈ мСТпроцСссноС взаимодСйствиС

socket

PreviousΠšΡ€Π°Ρ‚ΠΊΠΈΠΉ список APINextБСмСйство сокСтов

Last updated 4 years ago

Was this helpful?

Π‘Π΅Ρ‚Π΅Π²ΠΎΠΉ интСрфСйс Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня

Π­Ρ‚ΠΎΡ‚ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ обСспСчиваСт доступ ΠΊ интСрфСйсу сокСта socket BSD. Он доступСн Π²ΠΎ всСх соврСмСнных систСмах Unix, Windows, MacOS ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ….

НСкотороС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π²Ρ‹Π·ΠΎΠ²Ρ‹ API сокСтов ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы.

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ Python прСдставляСт собой ΠΏΡ€ΡΠΌΡƒΡŽ Ρ‚Ρ€Π°Π½ΡΠ»ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ систСмного Π²Ρ‹Π·ΠΎΠ²Π° Unix ΠΈ интСрфСйса Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для сокСтов Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΡΡ‚ΠΈΠ»ΡŒ Python: функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ сокСта, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ систСмныС Π²Ρ‹Π·ΠΎΠ²Ρ‹ сокСтов. Π’ΠΈΠΏΡ‹ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² нСсколько Π±ΠΎΠ»Π΅Π΅ высокоуровнСвыС, Ρ‡Π΅ΠΌ Π² интСрфСйсС C: ΠΊΠ°ΠΊ ΠΈ Π² случаС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ чтСния () ΠΈ записи () с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ Python, распрСдСлСниС Π±ΡƒΡ„Π΅Ρ€Π° ΠΏΡ€ΠΈ опСрациях ΠΏΡ€ΠΈΠ΅ΠΌΠ° происходит автоматичСски, Π° Π΄Π»ΠΈΠ½Π° Π±ΡƒΡ„Π΅Ρ€Π° нСявна ΠΏΡ€ΠΈ опСрациях ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ.

Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅:

ΠœΠΎΠ΄ΡƒΠ»ΡŒ - классы, ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‰ΠΈΠ΅ написаниС сСтСвых сСрвСров.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ - ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° TLS/SSL для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² сокСта.

Π’ зависимости ΠΎΡ‚ систСмы ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² сборки этот ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ сСмСйства сокСтов.

Π€ΠΎΡ€ΠΌΠ°Ρ‚ адрСса, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° сокСта, выбираСтся автоматичСски Π½Π° основС сСмСйства адрСсов, ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈ создании ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° сокСта. АдрСса сокСтов прСдставлСны ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

  • - сокСты для мСТпроцСссного взаимодСйствия UNIX-машин

  • - сокСты сСтСвого ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° IPv4

  • - сокСты сСтСвого ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° IPv6

  • - сокСты для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ ядром систСмы ΠΈ процСссами

  • - сокСты TIPC, ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°, Π½Π΅ основанного Π½Π° IP (кластСрная срСда)

  • - сокСты ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΎΠΉ сСти CAN

  • - сокСты для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ ядром систСмы ΠΈ процСссами

  • - сокСты для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² сСти Bluetooth

  • - интСрфСйс сокСтов Π² Linux для ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ ядра

  • - сокСты для связи Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин с ΠΈΡ… хостами

  • - Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΉ интСрфСйс нСпосрСдствСнно для сСтСвых устройств

  • - интСрфСйс сокСтов для сопроцСссоров Qualcomm Π² Linux

  • - Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ UDP с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ какая Ρ‡Π°ΡΡ‚ΡŒ покрываСтся ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммой

Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ имя хоста Π² части хоста адрСса сокСта IPv4/v6, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π΅Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Python ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ адрСс, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π½Ρ‹ΠΉ ΠΈΠ· Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ DNS. АдрСс сокСта Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ Π² фактичСский адрСс IPv4/v6, Π² зависимости ΠΎΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ DNS ΠΈ/ΠΈΠ»ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ хоста. Для Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ повСдСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ числовой адрСс Π² части хоста.

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ модуля

ΠœΠΎΠ΄ΡƒΠ»ΡŒ socket экспортируСт ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ элСмСнты.

  • socket.herror exception

  • socket.gaierror exception

  • socket.AF_UNIX

  • socket.AF_INET

  • socket.AF_INET6

  • socket.SOCK_STREAM

  • Π½Π΅ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΎ...

  • socket.CAN_BCM

  • Π½Π΅ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΎ...

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ сокСтов

ВсС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ сокСтов.

  • socket.socketpair ()

  • socket.create_connection ()

  • socket.create_server ()

  • socket.has_dualstack_ipv6 ()

  • socket.fromfd ()

  • socket.fromshare ()

  • socket.SocketType

Π”Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

ΠœΠΎΠ΄ΡƒΠ»ΡŒ socket Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ сСтСвыС услуги:

  • socket.ntohs ()

  • socket.htons ()

  • socket.inet_aton ()

  • socket.inet_ntoa ()

  • socket.inet_pton ()

  • socket.inet_ntop ()

  • socket.CMSG_LEN ()

  • socket.CMSG_SPACE ()

  • socket.getdeafulttimeout ()

  • socket.setdefaulttimeout ()

  • socket.sethostname ()

  • socket.if_nameindex ()

  • socket.if_nametoindex ()

  • socket.if_indextoname ()

Π£ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² socket Π΅ΡΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. Π—Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ makefile (), ΠΎΠ½ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ систСмным Π²Ρ‹Π·ΠΎΠ²Π°ΠΌ Unix, ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹ΠΌ ΠΊ сокСтам.

  • socket.connect_ex ()

  • socket.detach ()

  • socket.dup ()

  • socket.fileno ()

  • socket.get_inheritable ()

  • socket.getpeername ()

  • socket.getsockname ()

  • socket.getsockopt ()

  • socket.getblocking ()

  • socket.gettimeout ()

  • socket.ioctl ()

  • socket.recvfrom ()

  • socket.recvmsg ()

  • socket.recvmsg_into ()

  • socket.recvfrom_into ()

  • socket.recv_into ()

  • socket.sendto ()

  • socket.sendmsg ()

  • socket.sendmsg_afalg ()

  • socket.send_fds ()

  • socket.recv_fds ()

  • socket.sendfile ()

  • socket.set_inheritable ()

  • socket.setsockopt ()

  • socket.shutdown ()

  • socket.share ()

  • socket.family

  • socket.type

  • socket.proto

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚Π°ΠΉΠΌ-Π°ΡƒΡ‚ΠΎΠ² сокСтов

  • Π’ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ blocking mode ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π΄ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ систСма Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, истСкло врСмя оТидания соСдинСния).

Π’Π°ΠΉΠΌ-Π°ΡƒΡ‚Ρ‹ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ connect

Π’Π°ΠΉΠΌ-Π°ΡƒΡ‚Ρ‹ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ accept

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

ΠŸΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π²Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ IPv4.

# ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° эхо-сСрвСра
import socket

HOST = ''                 # БимволичСскоС имя, ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰Π΅Π΅ всС доступныС интСрфСйсы
PORT = 50007              # ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ Π½Π΅ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΡ€Ρ‚
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    s.bind((HOST, PORT))
    s.listen(1)
    conn, addr = s.accept()
    with conn:
        print('Connected by', addr)
        while True:
            data = conn.recv(1024)
            if not data: break
            conn.sendall(data)
# ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° эхо-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°
import socket

HOST = 'daring.cwi.nl'    # Π£Π΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ хост
PORT = 50007              # Π’ΠΎΡ‚ ΠΆΠ΅ ΠΏΠΎΡ€Ρ‚, Ρ‡Ρ‚ΠΎ ΠΈ сСрвСр
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    s.connect((HOST, PORT))
    s.sendall(b'Hello, world')
    data = s.recv(1024)
print('Received', repr(data))

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π²Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹ Π΄Π²ΡƒΠΌ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΌ Π²Ρ‹ΡˆΠ΅, Π½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΊΠ°ΠΊ IPv4, Ρ‚Π°ΠΊ ΠΈ IPv6. Π‘Ρ‚ΠΎΡ€ΠΎΠ½Π° сСрвСра Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ доступноС сСмСйство адрСсов (вмСсто этого ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠ»ΡƒΡˆΠ°Ρ‚ΡŒ ΠΎΠ±Π°). Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ систСм, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… IPv6, IPv6 Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚, ΠΈ сСрвСр ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ IPv4. ΠšΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΠ°Ρ сторона попытаСтся ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ ΠΊΠΎ всСм адрСсам, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΌ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΈΠΌΠ΅Π½, ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΉ.

# ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° эхо-сСрвСра
import socket
import sys

HOST = None               # БимволичСскоС имя, ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰Π΅Π΅ всС доступныС интСрфСйсы
PORT = 50007              # ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ Π½Π΅ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΡ€Ρ‚
s = None
for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC,
                              socket.SOCK_STREAM, 0, socket.AI_PASSIVE):
    af, socktype, proto, canonname, sa = res
    try:
        s = socket.socket(af, socktype, proto)
    except OSError as msg:
        s = None
        continue
    try:
        s.bind(sa)
        s.listen(1)
    except OSError as msg:
        s.close()
        s = None
        continue
    break
if s is None:
    print('could not open socket')
    sys.exit(1)
conn, addr = s.accept()
with conn:
    print('Connected by', addr)
    while True:
        data = conn.recv(1024)
        if not data: break
        conn.send(data)
# ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° эхо-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°
import socket
import sys

HOST = 'daring.cwi.nl'    # Π£Π΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ хост
PORT = 50007              # Π’ΠΎΡ‚ ΠΆΠ΅ ΠΏΠΎΡ€Ρ‚, Ρ‡Ρ‚ΠΎ ΠΈ сСрвСр
s = None
for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC, socket.SOCK_STREAM):
    af, socktype, proto, canonname, sa = res
    try:
        s = socket.socket(af, socktype, proto)
    except OSError as msg:
        s = None
        continue
    try:
        s.connect(sa)
    except OSError as msg:
        s.close()
        s = None
        continue
    break
if s is None:
    print('could not open socket')
    sys.exit(1)
with s:
    s.sendall(b'Hello, world')
    data = s.recv(1024)
print('Received', repr(data))

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ простой сСтСвой сниффСр с Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΌΠΈ сокСтами Π² Windows. Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ ΠΏΡ€Π°Π²Π° администратора для измСнСния интСрфСйса:

import socket

# ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ сСтСвой интСрфСйс
HOST = socket.gethostbyname(socket.gethostname())

# ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ сокСт ΠΈ ΠΏΡ€ΠΈΠ²ΡΠ·Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΊ общСдоступному интСрфСйсу
s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_IP)
s.bind((HOST, 0))

# Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ IP
s.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1)

# ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ всС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹
s.ioctl(socket.SIO_RCVALL, socket.RCVALL_ON)

# ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚
print(s.recvfrom(65565))

# ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ бСспорядочный Ρ€Π΅ΠΆΠΈΠΌ
s.ioctl(socket.SIO_RCVALL, socket.RCVALL_OFF)

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ интСрфСйс сокСта для связи с ΡΠ΅Ρ‚ΡŒΡŽ CAN с использованиСм ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° сырых сокСтов. Π§Ρ‚ΠΎΠ±Ρ‹ вмСсто этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ CAN с ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ диспСтчСра вСщания, ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ сокСт с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ:

socket.socket(socket.AF_CAN, socket.SOCK_DGRAM, socket.CAN_BCM)

Π’ этом послСднСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ особыС ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ:

import socket
import struct


# Π£ΠΏΠ°ΠΊΠΎΠ²ΠΊΠ°/распаковка CAN-Ρ„Ρ€Π΅ΠΉΠΌΠΎΠ² (см. 'Struct can_frame' Π² <linux / can.h>)

can_frame_fmt = "=IB3x8s"
can_frame_size = struct.calcsize(can_frame_fmt)

def build_can_frame(can_id, data):
    can_dlc = len(data)
    data = data.ljust(8, b'\x00')
    return struct.pack(can_frame_fmt, can_id, can_dlc, data)

def dissect_can_frame(frame):
    can_id, can_dlc, data = struct.unpack(can_frame_fmt, frame)
    return (can_id, can_dlc, data[:can_dlc])


# ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ сокСт ΠΈ ΠΏΡ€ΠΈΠ²ΡΠ·Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΊ интСрфСйсу 'vcan0'
s = socket.socket(socket.AF_CAN, socket.SOCK_RAW, socket.CAN_RAW)
s.bind(('vcan0',))

while True:
    cf, addr = s.recvfrom(can_frame_size)

    print('Received: can_id=%x, can_dlc=%x, data=%s' % dissect_can_frame(cf))

    try:
        s.send(cf)
    except OSError:
        print('Error sending CAN frame')

    try:
        s.send(build_can_frame(0x01, b'\x01\x02\x03'))
    except OSError:
        print('Error sending CAN frame')

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° нСсколько Ρ€Π°Π· со слишком ΠΌΠ°Π»ΠΎΠΉ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ выполнСниями ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ этой ошибкС:

OSError: [Errno 98] Address already in use

Π­Ρ‚ΠΎ связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ оставило сокСт Π² состоянии TIME_WAIT ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ использовано ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ это, Π½ΡƒΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ„Π»Π°Π³ сокСта socket.SO_REUSEADDR:

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((HOST, PORT))

Ρ„Π»Π°Π³ SO_REUSEADDR ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ядру ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ сокСт Π² состоянии TIME_WAIT, Π½Π΅ доТидаясь истСчСния Π΅Π³ΠΎ СстСствСнного Ρ‚Π°ΠΉΠΌ-Π°ΡƒΡ‚Π°.

Π‘ΠΌ.Ρ‚Π°ΠΊΠΆΠ΅: Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ сокСтов (Π½Π° C) ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΡΡ‚Π°Ρ‚ΡŒΡΡ…:

  • Π’Π²ΠΎΠ΄Π½ΠΎΠ΅ руководство ΠΏΠΎ мСТпроцСссному Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΈΡŽ 4.3BSD ΠΎΡ‚ Π‘Ρ‚ΡŽΠ°Ρ€Ρ‚Π° БСчрСста

  • Π Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΉ ΡƒΡ‡Π΅Π±Π½ΠΈΠΊ ΠΏΠΎ мСТпроцСссному Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΈΡŽ 4.3BSD, Бэмюэл Π”ΠΆ. Π›Π΅Ρ„Ρ„Π»Π΅Ρ€ ΠΈ Π΄Ρ€.

ВсС ошибки Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ. ΠœΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ для нСдопустимых Ρ‚ΠΈΠΏΠΎΠ² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ условий Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΠΈ памяти; начиная с Python 3.3, ошибки, связанныС с сСмантикой сокСта ΠΈΠ»ΠΈ адрСса, Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ OSError ΠΈΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π΅Π³ΠΎ подклассов (ΠΎΠ½ΠΈ использовались для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ).

ΠΠ΅Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅ΠΆΠΈΠΌ поддСрТиваСтся Ρ‡Π΅Ρ€Π΅Π· . ΠžΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ этого Π½Π° основС Ρ‚Π°ΠΉΠΌ-Π°ΡƒΡ‚ΠΎΠ² поддСрТиваСтся Ρ‡Π΅Ρ€Π΅Π· .

- ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΉ псСвдоним OSError

- ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° Ρ‚Π°ΠΉΠΌ-Π°ΡƒΡ‚ происходит Π² сокСтС

- создаСт Π½ΠΎΠ²Ρ‹ΠΉ сокСт

- Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ дСскриптор Ρ„Π°ΠΉΠ»Π° сокСта

- ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π² ΠΊΠΎΡ€Ρ‚Π΅ΠΆ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ для создания сокСта

- Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΠ΅ Π΄ΠΎΠΌΠ΅Π½Π½ΠΎΠ΅ имя

- ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ имя хоста Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ адрСса IPv4

- ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ имя хоста Π² Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ адрСса IPv4

- Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ строку с ΠΈΠΌΠ΅Π½Π΅ΠΌ хоста, Π³Π΄Π΅ выполняСтся Python

- ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ адрСс Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° IPv4/v6 Π² Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠ΅ имя хоста

- ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ адрСс сокСта Π² ΠΊΠΎΡ€Ρ‚Π΅ΠΆ хост/ΠΏΠΎΡ€Ρ‚

- ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ имя ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° Π² константу для

- ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ имя ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-слуТбы ΠΈ имя ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° Π² Π½ΠΎΠΌΠ΅Ρ€ ΠΏΠΎΡ€Ρ‚Π°

- ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Π½ΠΎΠΌΠ΅Ρ€ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-ΠΏΠΎΡ€Ρ‚Π° ΠΈ имя ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° Π² имя слуТбы

- ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ 32-Π±ΠΈΡ‚Π½Ρ‹Π΅ Ρ†Π΅Π»Ρ‹Π΅ числа ΠΈΠ· сСти Π² порядок Π±Π°ΠΉΡ‚ΠΎΠ² хоста

- ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ 32-Π±ΠΈΡ‚Π½Ρ‹Π΅ Ρ†Π΅Π»Ρ‹Π΅ числа ΠΈΠ· хоста Π² сСтСвой порядок Π±Π°ΠΉΡ‚ΠΎΠ²

ИзмСнСно Π² вСрсии 3.2: Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° диспСтчСра контСкста. Π’Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· диспСтчСра контСкста эквивалСнтСн Π²Ρ‹Π·ΠΎΠ²Ρƒ .

- ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ соСдинСниС

- привязываСт сокСт ΠΊ адрСсу

- ΠΏΠΎΠΌΠ΅Ρ‡Π°Π΅Ρ‚ сокСт Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ

- ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΊ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌΡƒ сокСту ΠΏΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ адрСсу

- Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ сСрвСру ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ количСство соСдинСний

- Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ„Π°ΠΉΠ»Π°, связанный с сокСтом

- ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· сокСта

- отправляСт Π΄Π°Π½Π½Ρ‹Π΅ Π² сокСт

- отправляСт всС Π΄Π°Π½Π½Ρ‹Π΅ Π² сокСт ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ

- устанавливаСт Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ ΠΈΠ»ΠΈ Π½Π΅Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅ΠΆΠΈΠΌ сокСта

- устанавливаСт Ρ‚Π°ΠΉΠΌ-Π°ΡƒΡ‚ для Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ сокСта

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ сокСта ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· Ρ‚Ρ€Π΅Ρ… Ρ€Π΅ΠΆΠΈΠΌΠΎΠ²: Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ, Π½Π΅Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ ΠΈΠ»ΠΈ Ρ‚Π°ΠΉΠΌ-Π°ΡƒΡ‚. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ сокСты всСгда ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, Π½ΠΎ это ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ, Π²Ρ‹Π·Π²Π°Π² .

Π’ Π½Π΅Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ non-blocking mode ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‚ΡΡ Π½Π΅ΡƒΠ΄Π°Ρ‡Π½ΠΎ (с ошибкой, которая, ΠΊ соТалСнию, зависит ΠΎΡ‚ систСмы), Ссли ΠΎΠ½ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ: Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ· модуля ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΈ доступСн Π»ΠΈ сокСт для чтСния ΠΈΠ»ΠΈ записи.

Π’ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ‚Π°ΠΉΠΌ-Π°ΡƒΡ‚Π° timeout mode ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‚ΡΡ ошибкой, Ссли ΠΎΠ½ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Ρ‹ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚Π°ΠΉΠΌ-Π°ΡƒΡ‚Π°, ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ для сокСта (ΠΎΠ½ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ‚Π°ΠΉΠΌ-Π°ΡƒΡ‚Π° ) ΠΈΠ»ΠΈ Ссли систСма Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ.

На ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы сокСты Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ‚Π°ΠΉΠΌ-Π°ΡƒΡ‚Π° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² Π½Π΅Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅ΠΆΠΈΠΌ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ€Π΅ΠΆΠΈΠΌΡ‹ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΈ Ρ‚Π°ΠΉΠΌ-Π°ΡƒΡ‚Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ совмСстно дСскрипторами Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ сокСтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ относятся ΠΊ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅ сСти. Π­Ρ‚Π° Π΄Π΅Ρ‚Π°Π»ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΈΠ΄ΠΈΠΌΡ‹Π΅ послСдствия, Ссли, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²Ρ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ сокСта.

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ Ρ‚Π°ΠΊΠΆΠ΅ зависит ΠΎΡ‚ установки Ρ‚Π°ΠΉΠΌ-Π°ΡƒΡ‚Π°, ΠΈ Π² Ρ†Π΅Π»ΠΎΠΌ рСкомСндуСтся Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ‚Π°ΠΉΠΌ-Π°ΡƒΡ‚Π° Π² . Однако систСмный сСтСвой стСк ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ Ρ‚Π°ΠΉΠΌ-Π°ΡƒΡ‚Π° соСдинСния нСзависимо ΠΎΡ‚ любого ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Ρ‚Π°ΠΉΠΌ-Π°ΡƒΡ‚Π° сокСта Python.

Если Π½Π΅ Ρ€Π°Π²Π½ΠΎ None, сокСты, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ , Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ этот Ρ‚Π°ΠΉΠΌ-Π°ΡƒΡ‚. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ зависит ΠΎΡ‚ настроСк ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°ΡŽΡ‰Π΅Π³ΠΎ сокСта:

Ссли ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ сокСт находится Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ blocking mode ΠΈΠ»ΠΈ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ‚Π°ΠΉΠΌ-Π°ΡƒΡ‚Π° timeout mode, сокСт, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ , находится Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ blocking mode;

Ссли ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ сокСт находится Π² Π½Π΅Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ non-blocking mode, Ρ‚ΠΎ, находится Π»ΠΈ сокСт, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΉ , Π² Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΌ ΠΈΠ»ΠΈ Π½Π΅Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅, зависит ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ кросс-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, рСкомСндуСтся Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ этот ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€.

Π’ΠΎΡ‚ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» TCP/IP: сСрвСр, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ всС Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ (обслуТивая Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°), ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΉ Π΅Π³ΠΎ. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ сСрвСр Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ , , , (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, повторяя для обслуТивания Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°), Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ трСбуСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ , . Π’Π°ΠΊΠΆΠ΅ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ сСрвСр Π½Π΅ выполняСт / Π½Π° сокСтС, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ½ ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Π΅Ρ‚, Π° Π½Π° Π½ΠΎΠ²ΠΎΠΌ сокСтС, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠΌ .

ПослС привязки (CAN_RAW) ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ () сокСта Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈ (ΠΈ ΠΈΡ… Π°Π½Π°Π»ΠΎΠ³ΠΈ) для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° сокСта ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ.

ΠΎΠ±Π° Π² РуководствС программиста UNIX, Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ 1 (Ρ€Π°Π·Π΄Π΅Π»Ρ‹ PS1: 7 ΠΈ PS1: 8). Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹, относящиСся ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅, ΠΏΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ систСмным Π²Ρ‹Π·ΠΎΠ²Π°ΠΌ, связанным с сокСтами, Ρ‚Π°ΠΊΠΆΠ΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ†Π΅Π½Π½Ρ‹ΠΌ источником ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ дСталях сСмантики сокСтов. Для Unix см. Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½Ρ‹Π΅ страницы; для Windows см. ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ WinSock (ΠΈΠ»ΠΈ Winsock 2). Для интСрфСйсов API, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… IPv6, Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°Ρ…ΠΎΡ‚Π΅Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Β«Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ интСрфСйса сокСтов для IPv6Β».

socket ()
socketserver
ssl
БСмСйство сокСтов
AF_UNIX
AF_INET
AF_INET6
AF_NETLINK
AF_TIPC
AF_CAN
PF_SYSTEM
AF_BLUETOOTH
AF_ALG
AF_VSOCK
AF_PACKET
AF_QIPCRTR
IPPROTO_UDPLITE
socket.error
setblocking ()
settimeout ()
Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ
socket.error exception
socket.timeout exception
ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Ρ‹
Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ
socket.socket ()
socket.close ()
socket.getaddrinfo ()
socket.getfqdn ()
socket.gethostbyname ()
socket.gethostbyname_ex ()
socket.gethostname ()
socket.gethostbyaddr ()
socket.getnameinfo ()
socket.getprotobyname ()
socket()
socket.getservbyname ()
socket.getservbyport ()
socket.ntohl ()
socket.htonl ()
ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ сокСтов
close ()
socket.accept ()
socket.bind ()
socket.close ()
socket.connect ()
socket.listen ()
socket.makefile ()
socket.recv ()
socket.send ()
socket.sendall ()
socket.setblocking ()
socket.settimeout ()
setdefaulttimeout ()
select
timeout exception
fileno ()
connect ()
settimeout ()
connect ()
create_connection ()
getdefaulttimeout ()
accept ()
accept ()
accept ()
socket ()
bind ()
listen ()
accept ()
accept ()
socket ()
connect ()
sendall ()
recv ()
accept ()
CAN_BCM
socket.send ()
socket.recv ()
RFC 3493