Socket Programming
BSD Sockets
Last updated
Was this helpful?
BSD Sockets
Last updated
Was this helpful?
āđāļĢāļīāđāļĄāļāđāļāļāļąāđāļāđāļāđāļĢāļ°āļāļāļāļāļīāļāļąāļāļīāļāļēāļĢ Berkeley UNIX (BSD) āļĢāļļāđāļ 4.2 āđāļāļĒ BSD āđāļāđāļāļđāļāļāļĨāđāļāļĒāļāļāļāļŠāļđāđāļŠāļēāļāļēāļĢāļāļ° āļāđāļĄāļĩāļāļ§āļēāļĄāļŠāļēāļĄāļēāļĢāļāđāļāļāļēāļĢāļĢāļāļāļĢāļąāļāļĢāļđāļāđāļāļāļāļēāļĢāļŠāļ·āđāļāļŠāļēāļĢāļĢāļ°āļŦāļ§āđāļēāļāđāļāļĢāđāļāļŠāđāļĨāļ°āļĢāļ°āļāļāđāļāļĢāļ·āļāļāđāļēāļĒāļāđāļ§āļĒāļ§āļīāļāļĩāļāļēāļĢāđāļāļ socket communication āļāļķāđāļāđāļāļ§āļāļīāļāļāļāļ Socket āļāļ·āļāđāļāļ·āđāļāđāļŦāđāļāļēāļĢāļŠāļ·āđāļāļŠāļēāļĢāļĢāļ°āļŦāļ§āđāļēāļāđāļāļĢāđāļāļŠāļāļģāđāļāļīāļāļāļēāļĢāļāđāļēāļāļĢāļ°āļāļāđāļāļĨāđ I/O āđāļāļĒāļĄāļĩāļāļēāļĢāđāļāđ file descriptor āļĢāđāļ§āļĄāļāļąāļ āđāļāļĒāļāļąāđāļ§āđāļāđāļĨāđāļ§āļāļąāļ§āđāļāļĢāđāļāļŠāļĨāļđāļāļāļĩāđāđāļāļīāļāļāļķāđāļāļāļ°āđāļāđāļĢāļąāļāļŠāļ·āļāļāļāļāļāļąāļ§ file descriptors āļĄāļēāļāļēāļāđāļāļĢāđāļāļŠāđāļĄāđ āđāļāļāđāļāđāļāđāļāļĩāļĒāļ§āļāļąāļāļāļĨāđāļāļāļēāļĢāļāļģāļāļēāļāļāļāļ pipe āđāļāđāļāļēāļĢāļŠāļ·āđāļāļŠāļēāļĢāļāđāļ§āļĒāļ§āļīāļāļĩāļāļēāļĢāđāļāļ pipe āđāļāļāļāļ°āđāļāđāļāđāļāļāļāļīāļĻāļāļēāļāđāļāļĩāļĒāļ§ (single direction) āđāļĨāļ°āļāđāļŠāļ·āđāļāļŠāļēāļĢāļāļąāļāđāļāđāđāļāļĩāļĒāļāļ āļēāļĒāđāļāđāļāļĢāļ·āđāļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđāđāļāļĢāļ·āđāļāļāđāļāļĩāļĒāļ§āļāļąāļāđāļāđāļēāļāļąāđāļ
āļāļąāļāļāļąāđāļāļĢāļ°āļāļāļāļāļīāļāļąāļāļīāļāļēāļĢ Berkeley UNIX āļāđāđāļāđāļāļģāđāļŠāļāļāđāļāļ§āļāļīāļāļāļēāļĢāļŠāļ·āđāļāļŠāļēāļĢāļĢāļ°āļŦāļ§āđāļēāļāđāļāļĢāđāļāļŠāļāļĩāđāļŠāļēāļĄāļēāļĢāļāļŠāļ·āđāļāļŠāļēāļĢāļāļąāļāļ āļēāļĒāđāļāđāļāļĢāļ·āđāļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđāđāļāļĩāļĒāļ§āļāļąāļ āļŦāļĢāļ·āļāļāđāļēāļāđāļāļĢāļ·āđāļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđāđāļāđāđāļāđāļāļ°āļāđāļāļāļāļĒāļđāđāļ āļēāļĒāđāļāđāļĢāļ°āļāļāđāļāļĢāļ·āļāļāđāļēāļĒ TCP/IP (TCP/IP networking) āļĢāļ§āļĄāļāļąāđāļāļĒāļąāļāļĢāļāļāļĢāļąāļāļāļēāļĢāļŠāļ·āđāļāļŠāļēāļĢāđāļāļāļŠāļāļāļāļīāļĻāļāļēāļ (bidirectional) āđāļāđāđāļāđāļāļāļąāļ āļāļąāļāļāļąāđāļāđāļāļ·āđāļāđāļŦāđāļāļēāļĢāļŠāļ·āđāļāļŠāļēāļĢāļŠāļēāļĄāļēāļĢāļāļāļļāļĒāđāļāđāļŠāļāļāļāļīāļĻāļāļēāļāļĢāļ°āļŦāļ§āđāļēāļāđāļāļĢāđāļāļŠāđāļĄāđāđāļĨāļ°āđāļāļĢāđāļāļŠāļĨāļđāļāļ āļēāļĒāđāļāđāļāļĢāļ·āđāļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđāđāļāļĩāļĒāļ§āļāļąāļ āļŠāļēāļĄāļēāļĢāļāļāļģāđāļāđāđāļāļĒāļāļēāļĢāđāļĢāļĩāļĒāļāđāļāđāļāļąāļāļāđāļāļąāļ socketpair() āļāļķāđāļāđāļāđāļāļāļąāļāļāđāļāļąāļāļāļĩāđāļāļđāļāđāļŦāđāļāļģāļāļēāļāđāļāđāđāļāļĩāļĒāļāđāļāđāļĄāļāđāļāļĩāļĒāļ§ āļāļķāđāļāļāļđāļāđāļĢāļĩāļĒāļāļ§āđāļē UNIX domain āđāļāļĒāļāļēāļĢāļāļēāļĢāđāļāđ AF_UNIX
(Address Format UNIX) āđāļĨāļ° SOCK_STREAM
āļāļĩāđāļāļĒāļđāđāđāļāđāļĨāļāļĢāļēāļĢāļĩ sys/socket.h
āđāļĨāļ°āđāļĨāļāļĢāļēāļĢāļĩ sys/types.h
āļāļąāļāļāļąāļ§āļāļĒāđāļēāļāđāļāļĢāđāļāļĢāļĄāļāđāļēāļāļĨāđāļēāļāļāļĩāđ
āļāļēāļāļāļąāļ§āļāļĒāđāļēāļāđāļāļĢāđāļāļĢāļĄāļāđāļēāļāļāđāļāļāļ°āđāļŦāđāļāļ§āđāļēāļāļēāļĢāđāļāđ socketpairs
(āļŦāļĢāļ·āļāđāļĄāđāļāļĢāļ°āļāļąāđāļ pipes) āļāļąāđāļāļāļđāļāļāļģāļāļąāļāđāļāđāļĢāļ·āđāļāļāļāļāļāļāļēāļĢāļŠāļ·āđāļāļŠāļēāļĢāļāđāļāļĄāļđāļĨāļĢāļ°āļŦāļ§āđāļēāļāđāļāļĢāđāļāļŠāđāļāđāđāļāļāļēāļ°āļāļĨāļļāđāļĄāđāļāļĢāđāļāļŠāļāļĩāđāļāļĒāļđāđāđāļāļāļĢāļ°āļāļđāļĨāđāļāļĩāļĒāļ§āļāļąāļ (āđāļāļĢāđāļāļŠāđāļĄāđāļāļĩāđāļĄāļĩāļāļēāļĢāļŠāļĢāđāļēāļāđāļāļĢāđāļāļŠāļĨāļđāļāđāļāļīāđāļĄāļāļķāđāļāļĄāļē) āđāļāļĒāđāļĄāļ·āđāļāđāļŦāļĢāđāļāđāļāļēāļĄāļāļĩāđāļĄāļĩāļāļēāļĢāđāļāļīāļāļāļāļāđāļāđāļĨāļ°āđāļāļĢāđāļāļŠāļāļĩāđāđāļĄāđāđāļāđāļāļĒāļđāđāđāļāļāļĢāļ°āļāļđāļĨāđāļāļĩāļĒāļ§āļāļąāļāļŦāļĢāļ·āļāđāļāļĢāđāļāļŠāļāļĩāđāļāļģāļāļēāļāļāļĒāļđāđāļāļāļĨāļ°āđāļāļĢāļ·āđāļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđāđāļĨāđāļ§ āđāļāđāļĨāļ°āđāļāļĢāđāļāļŠāļāļ°āļŠāļ·āđāļāļŠāļēāļĢāļāļąāļāļāļąāļāļāļĩāđāļĄāđāđāļāđ āđāļāđāļāļ°āļāđāļāļāļŠāļĢāđāļēāļ socket āļāļāļāļāļąāļ§āđāļāļāļāļķāđāļāļĄāļēāđāļāļ·āđāļāđāļāļēāđāļ§āđāļŠāđāļāđāļĨāļ°āļĢāļąāļāļāđāļāļĄāļđāļĨ āđāļāļĒāļāļ°āļāđāļāļāļĄāļĩāļāļēāļĢāļĢāļ°āļāļļāļāļ·āđāļ (name) āđāļŦāđāļāļąāļ socket āđāļāļ·āđāļāđāļāđāđāļāļāļēāļĢāļāđāļēāļāļāļīāļāļāļķāļāļāļąāļ āđāļĄāļ·āđāļāđāļĢāļīāđāļĄāđāļāđāļāļēāļāļāļ·āđāļāđāļŦāļĨāđāļēāļāļąāđāļāļāļ°āļāđāļāļāļāļđāļāđāļāļĨāļāđāļŦāđāđāļāđāļāļŦāļĄāļēāļĒāđāļĨāļāļāļĩāđāļāļĒāļđāđ (address) āļāļķāđāļāđāļĨāļāļāļĩāđāļāļĒāļđāđāļāļāļāđāļāđāļĨāļ° socket āļāļ°āļāļđāļāļĢāļ°āļāļļāđāļŦāđāļāļĒāļđāđāļ āļēāļĒāđāļāļāļ·āđāļāļāļĩāđāļŦāļĢāļ·āļāđāļāđāļĄāļāđāļāļĩāļĒāļ§āļāļąāļ
āđāļāļĒāđāļāļāļēāļ°āđāļāļāļĢāļāļĩāļāļĩāđāđāļāļĢāđāļāļŠāļāļģāļāļēāļāđāļĒāļāļāļąāļāļāļĒāļđāđāļāļāļĨāļ°āđāļāļĢāļ·āđāļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđāļāļĩāđāļāļķāđāļāļāļđāļāđāļāļ·āđāļāļĄāļāđāļāļāļĒāļđāđāļāļāļĢāļ°āļāļāđāļāļĢāļ·āļāļāđāļēāļĒāļāļīāļāđāļāļāļĢāđāđāļāđāļ (TCP/IP) āļāđāļāļāļāļēāļĢāļāļ°āļŠāļ·āđāļāļŠāļēāļĢāļāđāļāļĄāļđāļĨāļĢāļ°āļŦāļ§āđāļēāļāļāļąāļ āđāļāđāļĨāļ°āđāļāļĢāđāļāļŠāļāļ°āļāđāļāļāļĄāļĩāļāļēāļĢāļŠāļĢāđāļēāļāļāļ·āđāļāļŠāļģāļŦāļĢāļąāļ socket āļāļķāđāļāļĄāļēāļ āļēāļĒāđāļ Internet domain āđāļāļĩāļĒāļ§āļāļąāļāļāļķāđāļāļāļđāļāļāļąāļāļāļēāļāļĒāļđāđāđāļāļĢāļ°āļāļāļāļāļīāļāļąāļāļīāļāļēāļĢ UNIX āļāļĩāđāļĄāļĩāļāļēāļĢāđāļāđāđāļāļĢāđāļāļāļāļĨāļĄāļēāļāļĢāļēāļāļēāļāļŠāļģāļŦāļĢāļąāļāļĢāļ°āļāļāđāļāļĢāļ·āļāļāđāļēāļĒāļāļĩāđāļāļđāļāļāļģāļŦāļāļāđāļāļĒāļŦāļāđāļ§āļĒāļāļēāļ DAPRA āđāļāđāđāļāđ IP, TCP āđāļĨāļ° UDP āđāļāļĒāļāļĩāđāļŦāļĄāļēāļĒāđāļĨāļāļāļĩāđāļāļĒāļđāđ (address) āđāļ Internet domain āļāļąāđāļāļāļ°āļāļĢāļ°āļāļāļāđāļāļāđāļ§āļĒāļāļĩāđāļāļĒāļđāđāđāļāļĢāļ·āļāļāđāļēāļĒāļāļāļāđāļāļĢāļ·āđāļāļ (machine network address) āđāļĨāļ° āļŦāļĄāļēāļĒāđāļĨāļāļāļāļĢāđāļ (port address)
Datagram Socket
āđāļĢāļĩāļĒāļāļāļĩāļāļāļ·āđāļāļŦāļāļķāđāļāļ§āđāļē Connection less Socket āļāļķāđāļāđāļāđāđāļāļĢāđāļāļāļāļĨ UDP (User Datagram Protocol) āđāļāđāļāļāļąāļ§āļāļģāļŦāļāļāļ§āļīāļāļĩāļāļēāļĢāļŠāļ·āđāļāļŠāļēāļĢ āđāļāļĒāļāđāļāļĄāļđāļĨāļŦāļĢāļ·āļāđāļāđāļāđāļāđāļ (packet) āđāļāđāļĨāļ°āļāļąāļ§āļāļ°āļāļđāļāļŠāđāļāļāļ datagram socket āļāļĩāđāđāļĒāļāđāļŠāđāļāļāļēāļāļāļąāļāļāļāļāđāļ āļāļąāļāļāļąāđāļāđāļāđāļāđāļāđāļāļāļĩāđāļŠāđāļāļāļēāļāđāļāļĢāļ·āđāļāļāļāđāļāļāļēāļāļāđāļāļ°āļāļđāļāļĨāļģāđāļĨāļĩāļĒāļāļāļĢāļ°āļāļēāļĒāļāļāļāđāļāđāļāđāļāđāļĨāļ°āđāļŠāđāļāļāļēāļ āļāļāļāļķāļāđāļāļĢāļ·āđāļāļāļĢāļąāļāļāļĨāļēāļĒāļāļēāļ āđāļāļĒāđāļāđāļĨāļ°āđāļāđāļāđāļāđāļāļāđāļāļēāļāļāļ°āļĄāļēāļāļķāļāđāļāļĢāļ·āđāļāļāļāļĨāļēāļĒāļāļēāļāđāļāļāđāļĄāđāđāļāđāđāļĢāļĩāļĒāļāļāļēāļĄāļĨāļģāļāļąāļāļāļēāļĄāļāļĩāđāļāļđāļāļŠāđāļāļāļāļāļāļēāļāđāļāļĢāļ·āđāļāļāļāđāļāļāļēāļāļāđāļāļāļŦāļāđāļēāļāļąāđāļ
Stream Socket
āđāļĢāļĩāļĒāļāļāļĩāļāļāļ·āđāļāļŦāļāļķāđāļāļ§āđāļē Connection-oriented Socket āļāļķāđāļāđāļāđāđāļāļĢāđāļāļāļāļĨ TCP (Transport Control Protocol) āđāļāđāļāļāļąāļ§āļāļģāļŦāļāļāļ§āļīāļāļĩāļāļēāļĢāļŠāļ·āđāļāļŠāļēāļĢ āļāļķāđāļāļāļ°āļĄāļĩāļāļēāļĢāļŠāļāļēāļāļāļēāļāļēāļĢāđāļāļ·āđāļāļĄāļāđāļāđāļĨāļ°āļāļēāļĢāļąāļāļāļĩāļāļēāļĢāļĢāļąāļāļŠāđāļāđāļāđāļāđāļāđāļ āļāļąāļāļāļąāđāļāļāđāļāļĄāļđāļĨāļŦāļĢāļ·āļāđāļāđāļāđāļāđāļāđāļāđāļĨāļ°āļāļąāļ§āļāļ°āļāļđāļāļŠāđāļāļāļ stream socket āđāļĨāļ°āļāļ°āļāļđāļāļĨāļģāđāļĨāļĩāļĒāļāļŠāđāļāļāđāļēāļāļāđāļāļāļāļēāļāļāļĩāđāļāļđāļāļŠāļĢāđāļēāļāļāļķāđāļāļĄāļēāļāļĩāđāđāļāļĒāļąāļāđāļāļĢāļ·āđāļāļāļāļĨāļēāļĒāļāļēāļāļāļāļāļĢāļāļāđāļ§āļāļŠāļĄāļāļđāļĢāļāđ
Raw Socket
āļŠāđāļ§āļāđāļŦāļāđāļāļ°āļāļāđāļāļāļļāļāļāļĢāļāđāđāļāļĢāļ·āļāļāđāļēāļĒāđāļāđāļ āļŠāļ§āļīāļāļāđ (Switch) āđāļĨāļ° āđāļĢāļēāđāļāļāļĢāđ (Router) āļāļķāđāļāļāļģāļāļēāļāļāļĒāļđāđāđāļāļĢāļ°āļāļąāļ Internet Layer āļāļĩāđāļĄāļĩāļāļēāļĢāļĢāļąāļāļŠāđāļāļāđāļāļĄāļđāļĨāđāļāļĒāđāļĄāđāđāļāđāļĄāļĩāļāļēāļĢāđāļāđāđāļāļĢāđāļāļāļāļĨāđāļŦāļĄāļ·āļāļ datagram āđāļĨāļ° stream socket āđāļāļāļēāļĢāļāļģāļŦāļāļāļĄāļēāļāļĢāļēāļāļēāļāļāļēāļĢāļŠāļ·āđāļāļŠāļēāļĢ
āđāļĄāļ·āđāļāđāļāļĢāđāļāļŠāļāļąāđāļāļŠāļāļāļāļĩāđāļāļĒāļđāđāļāđāļēāļāđāļāļĢāļ·āđāļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđāļāđāļāļāļāļēāļĢāļŠāļ·āđāļāļŠāļēāļĢāļĢāļ°āļŦāļ§āđāļēāļāļāļąāļāļāļ°āļāđāļāļāļĄāļĩāļŠāļāļēāļāļāļēāļāļēāļĢāđāļāļ·āđāļāļĄāļāđāļāļāđāļ§āļĒāļāļąāđāļāļāļāļāļāļēāļĄāđāļāļāđāļāđāļĨāļĒāļĩ TCP/IP āļāļķāđāļāļāļĒāļđāđāđāļāļĢāļ°āļāļąāļāļāļąāđāļ transport (transport layer) āđāļĨāļ°āļāļ°āļāđāļāļāļĄāļĩāļāļēāļĢāļĢāļ°āļāļļāļŦāļĄāļēāļĒāđāļĨāļāļāļāļĢāđāļ (port address) āđāļāļĒāļąāļāđāļāļĢāđāļāļāļāļĨāđāļāļāļāļīāđāļāļāļąāđāļ (application protocol) āļāļĩāđāđāļāļĢāđāļāļŠāđāļāđāļĨāļ°āļāļąāđāļāđāļāđāļāļĒāļđāđāļāđāļ§āļĒ āļāļąāļ§āļāļĒāđāļēāļāđāļāđāļāđāļāļĢāđāļāļĢāļĄāļĢāļąāļāļŠāđāļāđāļāļĨāđāļāļĩāđāđāļāđāđāļāļĢāđāļāļāļāļĨ FTP āđāļāļāļēāļĢāļāļģāļŦāļāļāļāļ§āļāļāļļāļĄāļ§āļīāļāļĩāļāļēāļĢāļŠāđāļāđāļāļĨāđāļĢāļ°āļŦāļ§āđāļēāļāļāļąāļ āđāļĢāļĩāļĒāļāļāļēāļĢāļāļąāļāļāļēāđāļāļĢāđāļāļĢāļĄāļāļēāļāļāđāļēāļāļāļĩāđāļ§āđāļē socket programming
āļāļēāļĢāļāļąāļāļāļēāđāļāļĢāđāļāļĢāļĄāļāļēāļāļāđāļēāļ socket āļāļ°āļāđāļāļāļāļģāļāļ§āļēāļĄāđāļāđāļēāđāļāļ§āļīāļāļĩāļāļēāļĢāļāļąāđāļāļāđāļēāļŦāļĄāļēāļĒāđāļĨāļ IP address āđāļāđāļĨāļ°āļāļąāļ§ āđāļĄāđāļ§āđāļēāļāļ°āđāļāđāļāļŦāļĄāļēāļĒāđāļĨāļāđāļāļĢāļ·āļāļāđāļēāļĒ (network ID) āļŦāļĄāļēāļĒāđāļĨāļāđāļāļĢāļ·āđāļāļ (host ID) āđāļĨāļ°āļŦāļĄāļēāļĒāđāļĨāļ netmask address
āļāļ§āļēāļĄāļŠāļąāļĄāļāļąāļāļāđāļĢāļ°āļŦāļ§āđāļēāļāđāļāļĢāđāļāļĢāļĄ, socket, protocol āđāļĨāļ°āļŦāļĄāļēāļĒāđāļĨāļāļāļāļĢāđāļāļ āļēāļĒāđāļāđāļāļĢāļ·āđāļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđāđāļāļ·āđāļāđāļāđāđāļāļāļēāļĢāļŠāļ·āđāļāļŠāļēāļĢāļāđāļāļĄāļđāļĨāļĢāļ°āļŦāļ§āđāļēāļāđāļāļĢāđāļāļŠāļāļĩāđāļāļĒāļđāđāļāđāļēāļāđāļāļĢāļ·āđāļāļāļāļąāļ āļāļĢāļ°āđāļāđāļāļāļĩāđāļāđāļēāļŠāļāđāļāļāļĩāđāļāļąāļāļāļąāļāļāļēāļāļ§āļĢāļĢāļđāđāđāļāđāđāļāđ
āđāļāļĢāđāļāļĢāļĄāļŦāļāļķāđāļāđāļāļĢāđāļāļĢāļĄāļŠāļēāļĄāļēāļĢāļāđāļāļīāļāļāđāļāļāđāļāđāļāđāļāđāļŦāļĨāļēāļĒāļāđāļāļāđāļāđāļāđāļāļ·āđāļāļĢāļąāļāļāļēāļĢāđāļāļ·āđāļāļĄāļāđāļāļāļēāļāđāļāļĢāļ·āđāļāļāļ āļēāļĒāļāļāļāđāļāđāļāļĢāđāļāļĄāļāļąāļāđāļāđāļ§āļĨāļēāđāļāļĩāļĒāļ§āļāļąāļ
āđāļāļĢāđāļāļĢāļĄāļŦāļĨāļēāļĒāđāļāļĢāđāļāļĢāļĄāļŠāļēāļĄāļēāļĢāļāđāļāđāļāđāļāļāđāļāđāļāļāļąāļ§āđāļāļĩāļĒāļ§āļāļąāļāđāļāđāļ§āļĨāļēāđāļāļĩāļĒāļ§āļāļąāļāđāļāđāđāļĄāđāļāđāļāļĒāļāļāđāļŦāđāļāļāļēāļĢāđāļāđāđāļāļĨāļąāļāļĐāļāļ°āļāļĩāđ
āļĄāļēāļāļāļ§āđāļēāļŦāļāļķāđāļāļāđāļāļāđāļāđāļāļāļĩāđāļŠāļēāļĄāļēāļĢāļāļāļđāļāđāļāļĩāđāļĒāļ§āļāđāļāļāđāļĨāļ°āđāļāđāļāļēāļāļāļāļĢāđāļāļāļąāļāđāļāļĩāļĒāļ§āļāļąāļ
āđāļāļĢāđāļāļĢāļĄāļāļĢāļ°āļĒāļļāļāļāđāđāļāđāļĨāļ°āļāļąāļ§āļāļ°āļĄāļĩāļāļēāļĢāđāļāđāļāļąāđāļ TCP āđāļĨāļ° UDP āđāļāļ·āđāļāđāļāđāđāļāļāļēāļĢāļāļąāļāļāļēāļĢāđāļĨāļ°āļĢāļąāļāļŠāđāļāļāđāļāļĄāļđāļĨ
āļāļēāļĄāļ§āļąāļāļāļļāļāļĢāļ°āļŠāļāļāđāļāļĩāđāđāļāļāļāđāļēāļāļāļąāļāđāļ āđāļāđāļ āļāđāļāļāļāļēāļĢāđāļāđāļāļāļ§āļēāļĄāđāļĢāđāļ§āđāļāļāļēāļĢāļŠāđāļāđāļĄāđāļāđāļāļĄāļđāļĨāļāļ°āļŦāļēāļĒāđāļāđāļāđāļēāļāļāđāļāļ°āđāļāđāļāđāļāļāļāļēāļ UDP āļŦāļĢāļ·āļāļāđāļēāđāļāđāļāļāļ§āļēāļĄāļāļđāļāļāđāļāļāļāļāļāļāđāļāļĄāļđāļĨāđāļāļĒāļāļĩāđāļāđāļāļĄāļđāļĨāļāļ°āļāđāļāļāđāļĄāđāļŠāļđāļāļŦāļēāļĒāļāđāļāļ°āđāļāđāļāđāļāļāļāļēāļ TCP āđāļāļāļēāļĢāļĢāļąāļāļŠāđāļāđāļāļ
āđāļāļĨāđ /etc/services āļ āļēāļĒāđāļāļĢāļ°āļāļāļāļāļīāļāļąāļāļīāļāļēāļĢāļĨāļĩāļāļļāļāļāđāļāļ°āļāļāļāļĢāļēāļĒāļĨāļ°āđāļāļĩāļĒāļāļāļāļāđāļāļĢāđāļāļĢāļĄāđāļŦāđāļāļĢāļīāļāļēāļĢāđāļĨāļ°āđāļāļĢāđāļāļāļāļĨāļāļĩāđāđāļāđāļŦāļĄāļēāļĒāđāļĨāļāļāļāļĢāđāļāđāļāļāļēāļĢāļŠāļ·āđāļāļŠāļēāļĢāļāđāļēāļāļāđāļīāļāļāđāļāđāļāđāļāļĢāļ°āļāļąāļāļāļāļ Transport layer
āļāļēāļĢāļŠāļ·āđāļāļŠāļēāļĢāđāļāļāļĄāļĩāļāļēāļĢāļŠāļāļēāļāļāļēāļāļēāļĢāđāļāļ·āđāļāļĄāļāđāļ (connection-oriented āļŦāļĢāļ·āļ connectionful) āļŦāļĄāļēāļĒāļāļķāļāļāđāļāļāļāļĩāđāļāļ°āļĄāļĩāļāļēāļĢāļŠāļ·āđāļāļŠāļēāļĢāļāđāļāļĄāļđāļĨāļĢāļ°āļŦāļ§āđāļēāļāļāļąāļāļāļąāđāļāļŠāļāļāđāļāļĢāļ·āđāļāļāļāļ°āļāđāļāļāļĄāļĩāļāļēāļĢāļŠāļāļēāļāļāļēāļāļēāļĢāđāļāļ·āđāļāļĄāļāđāļāđāļŦāđāđāļŠāļĢāđāļāđāļĢāļĩāļĒāļāļĢāđāļāļĒāļāđāļāļ (point-to-point) āđāļāļ·āđāļāđāļŦāđāļāļēāļĢāļŠāļ·āđāļāļŠāļēāļĢāļāđāļāļĄāļđāļĨāļāđāļēāļāļāđāļāļāļĩāđāļĄāļĩāļāļēāļĢāļŠāđāļāļāđāļāļĄāļđāļĨāļāļĩāđāļāļĢāļāļāđāļ§āļāđāļĨāļ°āļĄāļĩāļāļđāļāļāđāļāļāļāļāļāļāđāļāļĄāļđāļĨāļĄāļēāļāļāļĩāđāļŠāļļāļ āđāļāļĒāļĄāļĩāļāļąāđāļāļāļāļāļāļĢāđāļēāļ§āđāļāļąāļāļāđāļāđāļāļāļĩāđ
āļŠāļĢāđāļēāļ socket āđāļĨāļ°āļĢāļ°āļāļļāđāļāđāļĄāļ -- socket()
āļāļģāļāļēāļĢāļāļđāļāļĢāļēāļĒāļĨāļ°āđāļāļĩāļĒāļāļāļāļ socket āđāļĨāļ°āļŦāļĄāļēāļĒāđāļĨāļāļāļāļĢāđāļ -- bind()
āļāļģāļāļēāļĢāđāļāļīāļāļāļāļĢāđāļāđāļāļ·āđāļāļĢāļāļāļēāļĢāļāļāļāļēāļĢāđāļāļ·āđāļāļĄāļāđāļāļāļēāļāļ āļēāļĒāļāļāļ -- listen()
āđāļĄāļ·āđāļāļĄāļĩāļāļēāļĢāļĢāđāļāļāļāļāļāļēāļĢāđāļāļ·āđāļāļĄāļāđāļāļāđāļāļ°āļāļāļāļĢāļąāļāđāļĨāļ°āđāļāļĢāļĩāļĒāļĄāļŠāļāļēāļāļāļēāļāļēāļĢāđāļāļ·āđāļāļĄāļāđāļāļĢāļ°āļŦāļ§āđāļēāļāļāļąāļ -- accept()
āđāļĢāļīāđāļĄāļāļēāļĢāļŠāļ·āđāļāļŠāļēāļĢāļāđāļāļĄāļđāļĨāļĢāļ°āļŦāļ§āđāļēāļāļāļąāļ -- write()
and read()
āļŠāļīāđāļāļŠāļļāļāļāļēāļĢāđāļāļ·āđāļāļĄāļāđāļ -- close()
āļāļēāļĢāļŠāļ·āđāļāļŠāļēāļĢāđāļāļāđāļĄāđāļāđāļāļāļĄāļĩāļāļēāļĢāļŠāļāļēāļāļāļēāļāļēāļĢāđāļāļ·āđāļāļĄāļāđāļ (connectionless) āļŦāļĄāļēāļĒāļāļķāļāđāļāļĢāļ·āđāļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđāļŠāļēāļĄāļēāļĢāļāļŠāļ·āđāļāļŠāļēāļĢāļāđāļāļĄāļđāļĨāļāļāļāđāļāđāļāđāļāļąāļāļāļĩāđāļāļĒāļāļĩāđāđāļĄāđāļāđāļāļāļĄāļĩāļāļēāļĢāļŠāļāļēāļāļāļēāļāļēāļĢāđāļāļ·āđāļāļĄāļāđāļāđāļāđāļāļĒāđāļēāļāđāļ āļāļąāļāļāļąāļāļāļēāđāļāļĢāđāļāļĢāļĄāļāđāļāļ°āļāđāļāļāļŦāļēāļ§āļīāļāļĩāļāļēāļĢāđāļāļāļāļīāļāļāđāļēāļāđāđāļāļ·āđāļāļāļģāđāļŦāđāļāļēāļĢāļŠāļ·āđāļāļŠāļēāļĢāļāđāļāļĄāļđāļĨāļāļđāļāļāđāļāļāļāđāļ§āļĒāļāļąāļ§āđāļāļ āđāļāļĒāļĄāļĩāļāļąāđāļāļāļāļāļāļĢāđāļēāļ§āđāļāļąāļāļāđāļāđāļāļāļĩāđ
āļŠāļĢāđāļēāļ socket āđāļĨāļ°āļĢāļ°āļāļļāđāļāđāļĄāļ -- socket()
āļāļģāļāļēāļĢāļāļđāļāļĢāļēāļĒāļĨāļ°āđāļāļĩāļĒāļāļāļāļ socket āđāļĨāļ°āļŦāļĄāļēāļĒāđāļĨāļāļāļāļĢāđāļ -- bind()
āđāļĢāļīāđāļĄāļāļēāļĢāļŠāļ·āđāļāļŠāļēāļĢāļāđāļāļĄāļđāļĨāļĢāļ°āļŦāļ§āđāļēāļāļāļąāļāđāļāđāļāļąāļāļāļĩ -- sendto()
and recvfrom()
āļŠāļīāđāļāļŠāļļāļāļāļēāļĢāđāļāļ·āđāļāļĄāļāđāļ -- close()
āđāļāļĒāļāđāļēāļāļĢāļīāļĒāļēāļĒāđāļĨāđāļ§āļāļēāļĢāļāļģāļāļēāļāļāļāļ sockets āļāļ°āđāļāđāļāđāļāļĨāļąāļāļĐāļāļ°āđāļāļāļāļđāļāļāļģāļŦāļāļāđāļŦāđāļŦāļĒāļļāļāļĢāļ (blocking) āļāļąāļāļāļąāđāļāļāļąāļāļāđāļāļąāļāļāđāļēāļāđāļāļ°āļāđāļāļāļāļđāļāļŦāļĒāļļāļāļāļĒāļđāđāļāļąāđāļ§āļāļāļ°āļāļāļāļ§āđāļēāļāļēāļāļāļĩāđāļĢāđāļāļāļāļāļāļ socket āļāļ°āļŠāļīāđāļāļŠāļļāļāļĨāļ āđāļāđāļāļĒāđāļēāļāđāļĢāļāđāļāļēāļĄāļāđāļŠāļēāļĄāļēāļĢāļāļāļąāđāļāļāđāļēāđāļŦāđ socket āļāļģāļāļēāļāđāļāļ non-blocking āđāļāđāđāļāļĒāļāļēāļĢāđāļāđāļāļąāļāļāđāļāļąāļ fcntl
āļāļąāļ§āļāļĒāđāļēāļāđāļāļĢāđāļāļĢāļĄāļŠāļ·āđāļāļŠāļēāļĢāļāđāļēāļ socket āđāļāļĨāļąāļāļĐāļāļ°āļāļēāļĢāđāļāļ·āđāļāļĄāļāđāļāđāļāļ connectionless (SOCK_DGRAM) āđāļāļĒāđāļāļĢāļ·āđāļāļāļĨāļđāļ (datagram client) āļāļ°āđāļāļ·āđāļāļĄāļāđāļāđāļāļĒāļąāļāđāļāļĢāļ·āđāļāļāđāļĄāđ (datagram server) āđāļĨāđāļ§āļāļģāļāļēāļĢāļŠāđāļāļāđāļāļāļ§āļēāļĄāđāļāļĒāļąāļāđāļāļĢāļ·āđāļāļāđāļĄāđ āđāļĄāļ·āđāļāđāļāļĢāļ·āđāļāļāđāļĄāđāđāļāđāļĢāļąāļāļāđāļāļāļ§āļēāļĄāļāđāļāļ°āđāļŠāļāļāļāļāļāļāļēāļāļŦāļāđāļēāļāļāļāļāļāļāļąāļāļāļąāļ§āļāļĒāđāļēāļāđāļāļĢāđāļāļĢāļĄāļāđāļēāļāļĨāđāļēāļāļāļĩāđ
āđāļāļĢāđāļāļĢāļĄāļāļąāđāļāđāļāļĢāļ·āđāļāļāđāļĄāđ (Server):
āđāļāļĢāđāļāļĢāļĄāļāļąāđāļāđāļāļĢāļ·āđāļāļāļĨāļđāļ (Client):
āļāļģāļāļēāļĢāļāļāļĄāđāļāļĨāđāđāļĨāļ°āļĢāļąāļāđāļāļĢāđāļāļĢāļĄāđāļāļĒāđāļĒāļāļŦāļāđāļēāļāđāļēāļ terminal āļāļąāļāļāļĩāđ
āļāļąāļ§āļāļĒāđāļēāļāđāļāļĢāđāļāļĢāļĄāđāļāļ·āđāļāļĄāļāđāļāļāđāļēāļāļāđāļāļāđāļāđāļāđāļāļĨāļąāļāļĐāļāļ° connection-oriented (SOCK_STREAM
) āđāļĄāļ·āđāļāļāļģāļāļēāļĢāļŠāļāļēāļāļāļēāļāļēāļĢāđāļāļ·āđāļāļĄāļāđāļāļŠāļģāđāļĢāđāļāđāļāļĒāđāļāļĢāļ·āđāļāļāļĨāļđāļ (client) āļāļ°āđāļāļ·āđāļāļĄāļāđāļāđāļāļĒāļąāļāđāļāļĢāļ·āđāļāļāđāļĄāđ (server) āđāļĨāđāļ§āļāļģāļāļēāļĢāļŠāđāļāļāđāļāļāļ§āļēāļĄāđāļāļĒāļąāļāđāļāļĢāļ·āđāļāļāđāļĄāđ āđāļĄāļ·āđāļāđāļāļĢāļ·āđāļāļāđāļĄāđāđāļāđāļĢāļąāļāļāđāļāļāļ§āļēāļĄāļāđāļāļ°āđāļŠāļāļāļāļāļāļāļēāļāļŦāļāđāļēāļāļāļāļāļāļāļąāļāļāļąāļ§āļāļĒāđāļēāļāđāļāļĢāđāļāļĢāļĄāļāđāļēāļāļĨāđāļēāļāļāļĩāđ
āđāļāļĢāđāļāļĢāļĄāļāļąāđāļāđāļāļĢāļ·āđāļāļāđāļĄāđ (Server):
āđāļāļĢāđāļāļĢāļĄāļāļąāđāļāđāļāļĢāļ·āđāļāļāļĨāļđāļ (Client):
āļāļģāļāļēāļĢāļāļāļĄāđāļāļĨāđāđāļĨāļ°āļĢāļąāļāđāļāļĢāđāļāļĢāļĄāđāļāļĒāđāļĒāļāļŦāļāđāļēāļāđāļēāļ terminal āļāļąāļāļāļĩāđ
āļāļēāļāļāļēāļĢāļāļģāļāļēāļāļāļāļāđāļāļĢāđāļāļĢāļĄāļāđāļēāļāļāđāļ āđāļĄāļ·āđāļāđāļāļĢāđāļāļĢāļĄ strm_server
āđāļĢāļīāđāļĄāļāļģāļāļēāļāļāļāđāļāļĢāļ·āđāļāļāđāļĄāđāđāļĨāđāļ§ āļāļ°āđāļāđāļāļŦāļĄāļēāļĒāđāļĨāļāļāļāļĢāđāļāļāļĩāđāđāļāļīāļāļĢāļāđāļŦāđāđāļāļĢāļ·āđāļāļāļāļ·āđāļāđāļāđāļēāļĄāļēāđāļāļ·āđāļāļĄāļāđāļ āļŦāļĨāļąāļāļāļēāļāļāļąāđāļāđāļĄāļ·āđāļāļĢāļąāļāđāļāļĢāđāļāļĢāļĄ strm_client
āļāļĩāđāļāļĒāļđāđāđāļāļāļąāđāļāļāļāļāđāļāļĢāļ·āđāļāļāļĨāļđāļāđāļāļĒāļĢāļ°āļāļļāļāļēāļĢāđāļāļīāļ§āđāļĄāļāļāđāļāļąāļ§āđāļĢāļāđāļāđāļāļŦāļĄāļēāļĒāđāļĨāļāļāļĩāđāļāļĒāļđāđāļāļāļāđāļāļĢāļ·āđāļāļāđāļĄāđ (127.0.0.1
) āđāļĨāļ°āļāļąāļ§āļāļĩāđāļŠāļāļāđāļāđāļāļŦāļĄāļēāļĒāđāļĨāļāļāļāļĢāđāļāļāļĩāđāļāļđāļāđāļāļīāļāđāļāđāļāļĢāļ·āđāļāļāđāļĄāđ (37219
) āļāļāļāļĢāļ°āļāļąāđāļāļāļēāļĢāđāļāļ·āđāļāļĄāļāđāļāļĢāļ°āļŦāļ§āđāļēāļāļāļąāđāļāļŠāļāļāđāļāļĢāļ·āđāļāļāļāļđāļāļŠāļāļēāļāļāļēāđāļĢāļĩāļĒāļāļĢāđāļāļĒāđāļĨāđāļ§ āļāđāļāļāļ§āļēāļĄāļāļĩāđāļāļđāļāļāļģāļŦāļāļāđāļ§āđāđāļāđāļāļĢāđāļāļĢāļĄ strm_client āļāđāļāļ°āļāļđāļāļŠāđāļāđāļāļĒāļąāļāđāļāļĢāļ·āđāļāļāđāļĄāđāļāļąāļāđāļāļĄāļąāļāļīāļāļąāļāļāļĨāļĨāļąāļāļāđāļāđāļēāļāļāļ
āļāļąāļāļāđāļāļąāļ accept()
āļ āļēāļĒāđāļāđāļāļĢāđāļāļĢāļĄ strm_server
āļāļ°āļāļđāļāđāļŦāđāļŦāļĒāļļāļāļĢāļāļāļąāļāļāļēāļĢāļĢāđāļāļāļāļāļāļēāļĢāđāļāļ·āđāļāļĄāļāđāļāļāļēāļāđāļāļĢāļ·āđāļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđāļ āļēāļĒāļāļāļ āļāļķāđāļāļāđāļēāļĒāļąāļāđāļĄāđāļĄāļĩāļāļēāļĢāļĢāđāļāļāļāļāļāļēāļĢāđāļāļ·āđāļāļĄāļāđāļāļŦāļĢāļ·āļāļāđāļāļĄāļđāļĨāļāļĩāđāļāđāļēāļāđāļāđāļĄāļēāļāļēāļ socket āļĒāļąāļāļĄāļēāđāļĄāđāļāļĢāļ āļ āđāļ§āļĨāļēāļāļąāđāļāļāļąāļ§āđāļāļĢāđāļāļĢāļĄ strm_server
āļāđāļĒāļąāļāļāļāļŦāļĒāļļāļāļĢāļāđāļāļĒāđāļĄāđāļŠāļēāļĄāļēāļĢāļāđāļāļāļģāļāļēāļāļāļĒāđāļēāļāļāļ·āđāļāđāļāđāđāļĨāļĒ
āļāļąāļāļāļąāđāļāđāļāļ·āđāļāđāļŦāđāļāļēāļĢāļāļģāļāļēāļāļāļāļāđāļāļĢāđāļāļĢāļĄ strm_server
āļāļĨāļēāļĒāđāļāđāļāđāļāļ non-blocking āļāļĨāđāļēāļ§āļāļ·āļāđāļāļĢāđāļāļĢāļĄāļĒāļąāļāļŠāļēāļĄāļēāļĢāļāļāļģāļāļēāļāļāļĒāđāļēāļāļāļ·āđāļāđāļāđāļāļĒāļđāđ āđāļāļĒāļāļĩāđāđāļĄāđāļāđāļāļāļŦāļĒāļļāļāļĢāļāđāļŦāļĄāļ·āļāļāđāļāļĢāđāļāļĢāļĄāļāđāļēāļāļāđāļ āļāđāļ§āļĒāļāļēāļĢāđāļĢāļĩāļĒāļāđāļāđāļāļąāļāļāđāļāļąāļ select()
āđāļāļ·āđāļāļāļģāļāļēāļĢāļāļĢāļ§āļāļŠāļāļāļ§āđāļēāđāļĄāļ·āđāļāđāļāļāļĩāđāļĄāļĩāļāļēāļĢāļĢāđāļāļāļāļāļāļēāļĢāđāļāļ·āđāļāļĄāļāđāļ socket āļāļēāļāđāļāļĢāļ·āđāļāļāļ āļēāļĒāļāļāļ āļāđāļāļ°āļāđāļāļĒāđāļāđāļĢāļĩāļĒāļāļāļąāļāļāđāļāļąāļ accept()
āđāļŦāđāļāļģāļāļēāļāļāļąāļāļāļĩ āļāđāļ§āļĒāļ§āļīāļāļĩāļāļēāļĢāļāļĩāđāđāļāļāļŠāļēāļĄāļēāļĢāļāļāļĢāļ°āļĒāļļāļāļāđāđāļŦāđāđāļāļĢāđāļāļĢāļĄāļāļāđāļāļĢāļ·āđāļāļāđāļĄāđ āļŠāļēāļĄāļēāļĢāļāđāļāļīāļāļĢāļąāļāļāļēāļĢāđāļāļ·āđāļāļĄāļāđāļāđāļāđāļĄāļēāļāļāļ§āđāļēāļŦāļāļķāđāļ socket āļāļąāļāļāļąāļ§āļāļĒāđāļēāļāđāļāļĢāđāļāļĢāļĄ new_strm_server.c
āļāļĩāđāļāļĢāļąāļāļāļĢāļļāļāđāļŦāļĄāđāļāđāļēāļāļĨāđāļēāļāļāļĩāđ
āļāļģāļāļēāļĢāļāļāļĄāđāļāļĨāđāđāļĨāļ°āļĢāļąāļāđāļāļĢāđāļāļĢāļĄāļāļĩāļāļāļĢāļąāđāļāđāļāļĒāđāļĒāļāļŦāļāđāļēāļāđāļēāļ terminal āļāļąāļāļāļĩāđ