SlideShare a Scribd company logo
Sockets
Jerin Mathew George
S5 MCA
Roll No:201219
Socket
• Sockets allow communication between two
different processes on the same or
different machines.
• it's a way to talk to other computers using
standard Unix file descriptors.
• Sockets were first introduced in 2.1BSD
and subsequently refined into their current
form with 4.2BSD. The sockets feature is
now available with most current UNIX
system releases.
• Bidirectional.
• Socket is a end-point communication.
• Socket: An interface between an
application process and transport layer.
The application process can
send/receive messages to/from
another application process (local or
remote)via a socket.
• End point determined by two things:
– Host address: IP address in Network Layer
– Port number: is Transport Layer
• Two end-points determine a connection:
socket pair
– ex: 206.62.226.35,p21 + 198.69.10.2,p1500
– ex: 206.62.226.35,p21 + 198.69.10.2,p1499
• Create Socket
– socket(domain,type,protocol)
• Domain: method of identifing
sockets(address)
– Range of Communicatin
Process on a single host
Across a network
• Type: Stream/Datagram
• Protocol: Usually 0, which means default
Common Socket Domains
• Unix Domain (AF_UNIX)
– Communication on a single host
– Adress->file system path name
• IPv4 Domain (AF_INET)
– Communication on IPv4 network
– Address->IPv4 address (32bit)+Port No
• IPv6 Domain (AF_INET6)
– Communication on IPv6 network
– Address->IPv4 address (128bit)+Port No
Sockets in unix
Sockets in unix
Ports
• Numbers (typical, since vary by OS):
– 0-1023 “reserved”, must be root
– 1024 - 5000 “ephemeral”
– Above 5000 for general use
(50,000 is specified max)
• Well-known, reserved services (see
/etc/services in Unix):
– ftp 21/tcp
– telnet 23/tcp
– finger 79/tcp
– snmp 161/udp
Using Ports to Identify Services
10
Web server
(port 80)
Client host
Server host 128.2.194.242
Echo server
(port 7)
Service request for
128.2.194.242:80
(i.e., the Web server)
Web server
(port 80)
Echo server
(port 7)
Service request for
128.2.194.242:7
(i.e., the echo server)
OS
OS
Client
Client
Socket Types
• Two main Types are:-
– UDP: User Datagram Protocol
(SOCK_STREAM)
– TCP: Transmission Control Protocol
(SOCK_DGRAM)
• Other domain provided by UNIX system is
– Sequential Packet
(SOCK_SEQPACKET)
Stream Socket(TCP)
Byte streamr
reliable (in order, all arrive, no duplicates)
flow control
Two channels on the socket for send bytes
to each other
Connection-oriented
* Eg: like two party phone calls
Sockets in unix
Datagram Socket(UDP)
Message oriented
no acknowledgements
no retransmissions
Unreliable (out of order, duplicates)
Connection less
*Eg: Postal System
Sequential Packet Socket(SCTP)
It is not widely used protocol
Midway between stream and datagram
socket
Message oriented
Connection oriented
Reliable
Addresses and Sockets
• Structure to hold address information
• Functions pass address from user to OS
bind()
connect()
sendto()
• Functions pass address from OS to user
accept()
recvfrom()
Socket Address Structure
struct in_addr {
in_addr_t s_addr; /* 32-bit IPv4 addresses */
};
struct sockaddr_in {
unit8_t sin_len; /* length of structure */
sa_family_t sin_family; /* AF_INET *domain/
in_port_t sin_port; /* TCP/UDP Port num */
struct in_addr sin_addr; /* IPv4 address (above) */
char sin_zero[8]; /* unused */
}
• Are also “generic” and “IPv6” socket
structures
TCP Client-Server
socket()
bind()
listen()
accept()
Server
socket()
connect()
send()
recv()
Client
(Block until connection)
“Handshake”
recv()
send()
Data (request)
Data (reply)
close()
End-of-File
recv()
“well-known”
port ActiveSocket
Passive Socket
socket()
int socket(int family, int type, int protocol);
Create a socket, giving access to transport layer
service.
• family is one of
– AF_INET (IPv4), AF_INET6 (IPv6), AF_LOCAL (local Unix),
– AF_ROUTE (access to routing tables), AF_KEY (new, for
encryption)
• type is one of
– SOCK_STREAM (TCP), SOCK_DGRAM (UDP)
– SOCK_RAW (for special IP packets, PING, etc. Must be root)
setuid bit (-rws--x--x root 1997 /sbin/ping*)
• protocol is 0 (used for some raw socket
options)
• upon success returns socket descriptor
– Integer, like file descriptor
– Return -1 if failure
bind()
• sockfd is socket descriptor from socket()
• myaddr is a pointer to address struct with:
– port number and IP address
– if port is 0, then host will pick ephemeral port
not usually for server (exception RPC port-map)
– IP address != INADDR_ANY (unless multiple nics)
• addrlen is length of structure
• returns 0 if ok, -1 on error
– EADDRINUSE (“Address already in use”)
int bind(int sockfd, const struct sockaddr *myaddr,
socklen_t addrlen);
Assign a local protocol address (“name”) to a socket.
listen()
• sockfd is socket descriptor from socket()
• backlog is maximum number of incomplete
connections
– historically 5
– rarely above 15 on a even moderate Web server!
• Sockets default to active (for a client)
– change to passive so OS will accept connection
int listen(int sockfd, int backlog);
Change socket state for TCP server.
accept()
• sockfd is socket descriptor from socket()
• cliaddr and addrlen return protocol address from
client
• returns brand new descriptor, created by OS
• note, if create new process or thread, can create
concurrent server
int accept(int sockfd, struct sockaddr
cliaddr, socklen_t *addrlen);
Return next completed connection.
close()
• sockfd is socket descriptor from socket()
• closes socket for reading/writing
– returns (doesn’t block)
– attempts to send any unsent data
– socket option SO_LINGER
block until data sent
or discard any remaining data
– returns -1 if error
int close(int sockfd);
Close socket for use.
TCP Client-Server
socket()
bind()
listen()
accept()
Server
socket()
connect()
send()
recv()
Client
(Block until connection)
“Handshake”
recv()
send()
Data (request)
Data (reply)
close()
End-of-File
recv()
“well-known”
port
connect()
• sockfd is socket descriptor from socket()
• servaddr is a pointer to a structure with:
– port number and IP address
– must be specified (unlike bind())
• addrlen is length of structure
• client doesn’t need bind()
– OS will pick ephemeral port
• returns socket descriptor if ok, -1 on error
int connect(int sockfd, const struct sockaddr
*servaddr, socklen_t addrlen);
Connect to server.
Sending and Receiving
int recv(int sockfd, void *buff, size_t
mbytes, int flags);
int send(int sockfd, void *buff, size_t
mbytes, int flags);
• Same as read() and write() but for flags
– MSG_DONTWAIT (this send non-blocking)
– MSG_OOB (out of band data, 1 byte sent ahead)
– MSG_PEEK (look, but don’t remove)
– MSG_WAITALL (don’t give me less than max)
– MSG_DONTROUTE (bypass routing table)
UDP Client-Server
socket()
bind()
recvfrom()
Server
socket()
sendto()
recvfrom()
Client
(Block until receive datagram)
sendto()
Data (request)
Data (reply)
close()
“well-known”
port
- No “handshake”
- No simultaneous close
- No fork()/spawn() for concurrent servers!
Sending and Receiving
int recvfrom(int sockfd, void *buff, size_t mbytes,
int flags, struct sockaddr *from, socklen_t
*addrlen);
int sendto(int sockfd, void *buff, size_t mbytes, int
flags, const struct sockaddr *to, socklen_t
addrlen);
• Same as recv() and send() but for addr
– recvfrom fills in address of where packet
came from
– sendto requires address of where sending
packet to
Sockets in unix
Sockets in unix
Sockets in unix
Sockets in unix
Sockets in unix
Sockets in unix
Sockets in unix
Sockets in unix
Sockets in unix
Sockets in unix
Sockets in unix
Sockets in unix

More Related Content

PPTX
Hypertext transfer protocol (http)
Shimona Agarwal
 
PPTX
HTTP request and response
Sahil Agarwal
 
PPTX
Telnet
DeekshaSharma191
 
PDF
Python programming : Classes objects
Emertxe Information Technologies Pvt Ltd
 
PDF
Python programming : Files
Emertxe Information Technologies Pvt Ltd
 
PDF
chapter 2 architecture
Sharda University Greater Noida
 
PPT
Java Networking
Sunil OS
 
PPTX
Network programming in java - PPT
kamal kotecha
 
Hypertext transfer protocol (http)
Shimona Agarwal
 
HTTP request and response
Sahil Agarwal
 
Python programming : Classes objects
Emertxe Information Technologies Pvt Ltd
 
Python programming : Files
Emertxe Information Technologies Pvt Ltd
 
chapter 2 architecture
Sharda University Greater Noida
 
Java Networking
Sunil OS
 
Network programming in java - PPT
kamal kotecha
 

What's hot (20)

PPTX
RPC: Remote procedure call
Sunita Sahu
 
PPT
PHP - Introduction to File Handling with PHP
Vibrant Technologies & Computers
 
PPT
Java Streams
M Vishnuvardhan Reddy
 
PPT
Socket Programming
CEC Landran
 
PPT
Files in c++ ppt
Kumar
 
PDF
Distributed Operating System_4
Dr Sandeep Kumar Poonia
 
PPTX
HyperText Transfer Protocol (HTTP)
Gurjot Singh
 
ODP
Linux commands
Balakumaran Arunachalam
 
PDF
Python network programming
Learnbay Datascience
 
PPTX
Vectors in Java
Abhilash Nair
 
PDF
Network programming Using Python
Karim Sonbol
 
PPT
Introduction to Web Programming - first course
Vlad Posea
 
PPT
ADO .Net
DrSonali Vyas
 
PDF
Concurrency
Sri Prasanna
 
PPT
Files and Directories in PHP
Nicole Ryan
 
PDF
JavaScript - Chapter 12 - Document Object Model
WebStackAcademy
 
PPTX
Android Layout.pptx
vishal choudhary
 
PPTX
Regular expressions in Python
Sujith Kumar
 
PPTX
First fit , Best fit, Worst fit
Shahzeb Amjad
 
PPTX
Concurrency control
Soumyajit Dutta
 
RPC: Remote procedure call
Sunita Sahu
 
PHP - Introduction to File Handling with PHP
Vibrant Technologies & Computers
 
Java Streams
M Vishnuvardhan Reddy
 
Socket Programming
CEC Landran
 
Files in c++ ppt
Kumar
 
Distributed Operating System_4
Dr Sandeep Kumar Poonia
 
HyperText Transfer Protocol (HTTP)
Gurjot Singh
 
Linux commands
Balakumaran Arunachalam
 
Python network programming
Learnbay Datascience
 
Vectors in Java
Abhilash Nair
 
Network programming Using Python
Karim Sonbol
 
Introduction to Web Programming - first course
Vlad Posea
 
ADO .Net
DrSonali Vyas
 
Concurrency
Sri Prasanna
 
Files and Directories in PHP
Nicole Ryan
 
JavaScript - Chapter 12 - Document Object Model
WebStackAcademy
 
Android Layout.pptx
vishal choudhary
 
Regular expressions in Python
Sujith Kumar
 
First fit , Best fit, Worst fit
Shahzeb Amjad
 
Concurrency control
Soumyajit Dutta
 
Ad

Viewers also liked (6)

PDF
Inter process communication using Linux System Calls
jyoti9vssut
 
PPT
Ipc ppt
Ruchi Sharma
 
PPTX
Mobile Ad hoc Networks
Jagdeep Singh
 
PPT
Inter process communication
Mohd Tousif
 
PDF
Inter process communication
RJ Mehul Gadhiya
 
PDF
Inter Process Communication
Anil Kumar Pugalia
 
Inter process communication using Linux System Calls
jyoti9vssut
 
Ipc ppt
Ruchi Sharma
 
Mobile Ad hoc Networks
Jagdeep Singh
 
Inter process communication
Mohd Tousif
 
Inter process communication
RJ Mehul Gadhiya
 
Inter Process Communication
Anil Kumar Pugalia
 
Ad

Similar to Sockets in unix (20)

PPT
Introduction to sockets tcp ip protocol.ppt
MajedAboubennah
 
PPTX
L5-Sockets.pptx
ycelgemici1
 
PPTX
Basics of sockets
AviNash ChaVhan
 
PDF
Socket programming using C
Ajit Nayak
 
PPT
Sockets intro
AviNash ChaVhan
 
PPT
sockets_intro.ppt
AnilGupta681764
 
PPT
INTRODUCTION TO SOCKETS IN COMPUTER NETWORKS DEPT OF CSE.ppt
senthilnathans25
 
PPT
03-socketprogramming for college students.ppt
SoumabhaRoy
 
PPT
03-socketprogrsamming forcoleeger students.ppt
SoumabhaRoy
 
PPT
Multiplayer Game Programming Berkeley Socket API Chapter 3.ppt
MoissFreitas13
 
PPT
Np unit2
vamsitricks
 
PDF
Sockets
Indrasena Reddy
 
PPT
Sockets
Gopaiah Sanaka
 
PPTX
Byte Ordering - Unit 2.pptx
RockyBhai46825
 
PDF
Computer network (12)
NYversity
 
PDF
Network Sockets
Peter R. Egli
 
PDF
Sockets
babu4b4u
 
PPT
Socket programming
Divya Sharma
 
PDF
Socket Programming TCP:IP PPT.pdf
PraveenKumar187040
 
PPTX
Socket Programming
VisualBee.com
 
Introduction to sockets tcp ip protocol.ppt
MajedAboubennah
 
L5-Sockets.pptx
ycelgemici1
 
Basics of sockets
AviNash ChaVhan
 
Socket programming using C
Ajit Nayak
 
Sockets intro
AviNash ChaVhan
 
sockets_intro.ppt
AnilGupta681764
 
INTRODUCTION TO SOCKETS IN COMPUTER NETWORKS DEPT OF CSE.ppt
senthilnathans25
 
03-socketprogramming for college students.ppt
SoumabhaRoy
 
03-socketprogrsamming forcoleeger students.ppt
SoumabhaRoy
 
Multiplayer Game Programming Berkeley Socket API Chapter 3.ppt
MoissFreitas13
 
Np unit2
vamsitricks
 
Sockets
Gopaiah Sanaka
 
Byte Ordering - Unit 2.pptx
RockyBhai46825
 
Computer network (12)
NYversity
 
Network Sockets
Peter R. Egli
 
Sockets
babu4b4u
 
Socket programming
Divya Sharma
 
Socket Programming TCP:IP PPT.pdf
PraveenKumar187040
 
Socket Programming
VisualBee.com
 

Recently uploaded (20)

PPTX
TEF & EA Bsc Nursing 5th sem.....BBBpptx
AneetaSharma15
 
PPTX
Strengthening open access through collaboration: building connections with OP...
Jisc
 
PPTX
Nursing Management of Patients with Disorders of Ear, Nose, and Throat (ENT) ...
RAKESH SAJJAN
 
PPTX
ACUTE NASOPHARYNGITIS. pptx
AneetaSharma15
 
DOCX
SAROCES Action-Plan FOR ARAL PROGRAM IN DEPED
Levenmartlacuna1
 
PPTX
Open Quiz Monsoon Mind Game Prelims.pptx
Sourav Kr Podder
 
PPTX
How to Manage Global Discount in Odoo 18 POS
Celine George
 
PDF
Sunset Boulevard Student Revision Booklet
jpinnuck
 
PDF
Landforms and landscapes data surprise preview
jpinnuck
 
PDF
Arihant Class 10 All in One Maths full pdf
sajal kumar
 
PPTX
Introduction and Scope of Bichemistry.pptx
shantiyogi
 
PDF
Review of Related Literature & Studies.pdf
Thelma Villaflores
 
PDF
3.The-Rise-of-the-Marathas.pdfppt/pdf/8th class social science Exploring Soci...
Sandeep Swamy
 
PDF
1.Natural-Resources-and-Their-Use.ppt pdf /8th class social science Exploring...
Sandeep Swamy
 
PPTX
How to Manage Leads in Odoo 18 CRM - Odoo Slides
Celine George
 
PDF
UTS Health Student Promotional Representative_Position Description.pdf
Faculty of Health, University of Technology Sydney
 
PPTX
CARE OF UNCONSCIOUS PATIENTS .pptx
AneetaSharma15
 
PPTX
Open Quiz Monsoon Mind Game Final Set.pptx
Sourav Kr Podder
 
PPTX
family health care settings home visit - unit 6 - chn 1 - gnm 1st year.pptx
Priyanshu Anand
 
PPTX
Skill Development Program For Physiotherapy Students by SRY.pptx
Prof.Dr.Y.SHANTHOSHRAJA MPT Orthopedic., MSc Microbiology
 
TEF & EA Bsc Nursing 5th sem.....BBBpptx
AneetaSharma15
 
Strengthening open access through collaboration: building connections with OP...
Jisc
 
Nursing Management of Patients with Disorders of Ear, Nose, and Throat (ENT) ...
RAKESH SAJJAN
 
ACUTE NASOPHARYNGITIS. pptx
AneetaSharma15
 
SAROCES Action-Plan FOR ARAL PROGRAM IN DEPED
Levenmartlacuna1
 
Open Quiz Monsoon Mind Game Prelims.pptx
Sourav Kr Podder
 
How to Manage Global Discount in Odoo 18 POS
Celine George
 
Sunset Boulevard Student Revision Booklet
jpinnuck
 
Landforms and landscapes data surprise preview
jpinnuck
 
Arihant Class 10 All in One Maths full pdf
sajal kumar
 
Introduction and Scope of Bichemistry.pptx
shantiyogi
 
Review of Related Literature & Studies.pdf
Thelma Villaflores
 
3.The-Rise-of-the-Marathas.pdfppt/pdf/8th class social science Exploring Soci...
Sandeep Swamy
 
1.Natural-Resources-and-Their-Use.ppt pdf /8th class social science Exploring...
Sandeep Swamy
 
How to Manage Leads in Odoo 18 CRM - Odoo Slides
Celine George
 
UTS Health Student Promotional Representative_Position Description.pdf
Faculty of Health, University of Technology Sydney
 
CARE OF UNCONSCIOUS PATIENTS .pptx
AneetaSharma15
 
Open Quiz Monsoon Mind Game Final Set.pptx
Sourav Kr Podder
 
family health care settings home visit - unit 6 - chn 1 - gnm 1st year.pptx
Priyanshu Anand
 
Skill Development Program For Physiotherapy Students by SRY.pptx
Prof.Dr.Y.SHANTHOSHRAJA MPT Orthopedic., MSc Microbiology
 

Sockets in unix

  • 1. Sockets Jerin Mathew George S5 MCA Roll No:201219
  • 2. Socket • Sockets allow communication between two different processes on the same or different machines. • it's a way to talk to other computers using standard Unix file descriptors. • Sockets were first introduced in 2.1BSD and subsequently refined into their current form with 4.2BSD. The sockets feature is now available with most current UNIX system releases.
  • 3. • Bidirectional. • Socket is a end-point communication. • Socket: An interface between an application process and transport layer. The application process can send/receive messages to/from another application process (local or remote)via a socket.
  • 4. • End point determined by two things: – Host address: IP address in Network Layer – Port number: is Transport Layer • Two end-points determine a connection: socket pair – ex: 206.62.226.35,p21 + 198.69.10.2,p1500 – ex: 206.62.226.35,p21 + 198.69.10.2,p1499 • Create Socket – socket(domain,type,protocol)
  • 5. • Domain: method of identifing sockets(address) – Range of Communicatin Process on a single host Across a network • Type: Stream/Datagram • Protocol: Usually 0, which means default
  • 6. Common Socket Domains • Unix Domain (AF_UNIX) – Communication on a single host – Adress->file system path name • IPv4 Domain (AF_INET) – Communication on IPv4 network – Address->IPv4 address (32bit)+Port No • IPv6 Domain (AF_INET6) – Communication on IPv6 network – Address->IPv4 address (128bit)+Port No
  • 9. Ports • Numbers (typical, since vary by OS): – 0-1023 “reserved”, must be root – 1024 - 5000 “ephemeral” – Above 5000 for general use (50,000 is specified max) • Well-known, reserved services (see /etc/services in Unix): – ftp 21/tcp – telnet 23/tcp – finger 79/tcp – snmp 161/udp
  • 10. Using Ports to Identify Services 10 Web server (port 80) Client host Server host 128.2.194.242 Echo server (port 7) Service request for 128.2.194.242:80 (i.e., the Web server) Web server (port 80) Echo server (port 7) Service request for 128.2.194.242:7 (i.e., the echo server) OS OS Client Client
  • 11. Socket Types • Two main Types are:- – UDP: User Datagram Protocol (SOCK_STREAM) – TCP: Transmission Control Protocol (SOCK_DGRAM) • Other domain provided by UNIX system is – Sequential Packet (SOCK_SEQPACKET)
  • 12. Stream Socket(TCP) Byte streamr reliable (in order, all arrive, no duplicates) flow control Two channels on the socket for send bytes to each other Connection-oriented * Eg: like two party phone calls
  • 14. Datagram Socket(UDP) Message oriented no acknowledgements no retransmissions Unreliable (out of order, duplicates) Connection less *Eg: Postal System
  • 15. Sequential Packet Socket(SCTP) It is not widely used protocol Midway between stream and datagram socket Message oriented Connection oriented Reliable
  • 16. Addresses and Sockets • Structure to hold address information • Functions pass address from user to OS bind() connect() sendto() • Functions pass address from OS to user accept() recvfrom()
  • 17. Socket Address Structure struct in_addr { in_addr_t s_addr; /* 32-bit IPv4 addresses */ }; struct sockaddr_in { unit8_t sin_len; /* length of structure */ sa_family_t sin_family; /* AF_INET *domain/ in_port_t sin_port; /* TCP/UDP Port num */ struct in_addr sin_addr; /* IPv4 address (above) */ char sin_zero[8]; /* unused */ } • Are also “generic” and “IPv6” socket structures
  • 18. TCP Client-Server socket() bind() listen() accept() Server socket() connect() send() recv() Client (Block until connection) “Handshake” recv() send() Data (request) Data (reply) close() End-of-File recv() “well-known” port ActiveSocket Passive Socket
  • 19. socket() int socket(int family, int type, int protocol); Create a socket, giving access to transport layer service. • family is one of – AF_INET (IPv4), AF_INET6 (IPv6), AF_LOCAL (local Unix), – AF_ROUTE (access to routing tables), AF_KEY (new, for encryption) • type is one of – SOCK_STREAM (TCP), SOCK_DGRAM (UDP) – SOCK_RAW (for special IP packets, PING, etc. Must be root) setuid bit (-rws--x--x root 1997 /sbin/ping*) • protocol is 0 (used for some raw socket options) • upon success returns socket descriptor – Integer, like file descriptor – Return -1 if failure
  • 20. bind() • sockfd is socket descriptor from socket() • myaddr is a pointer to address struct with: – port number and IP address – if port is 0, then host will pick ephemeral port not usually for server (exception RPC port-map) – IP address != INADDR_ANY (unless multiple nics) • addrlen is length of structure • returns 0 if ok, -1 on error – EADDRINUSE (“Address already in use”) int bind(int sockfd, const struct sockaddr *myaddr, socklen_t addrlen); Assign a local protocol address (“name”) to a socket.
  • 21. listen() • sockfd is socket descriptor from socket() • backlog is maximum number of incomplete connections – historically 5 – rarely above 15 on a even moderate Web server! • Sockets default to active (for a client) – change to passive so OS will accept connection int listen(int sockfd, int backlog); Change socket state for TCP server.
  • 22. accept() • sockfd is socket descriptor from socket() • cliaddr and addrlen return protocol address from client • returns brand new descriptor, created by OS • note, if create new process or thread, can create concurrent server int accept(int sockfd, struct sockaddr cliaddr, socklen_t *addrlen); Return next completed connection.
  • 23. close() • sockfd is socket descriptor from socket() • closes socket for reading/writing – returns (doesn’t block) – attempts to send any unsent data – socket option SO_LINGER block until data sent or discard any remaining data – returns -1 if error int close(int sockfd); Close socket for use.
  • 24. TCP Client-Server socket() bind() listen() accept() Server socket() connect() send() recv() Client (Block until connection) “Handshake” recv() send() Data (request) Data (reply) close() End-of-File recv() “well-known” port
  • 25. connect() • sockfd is socket descriptor from socket() • servaddr is a pointer to a structure with: – port number and IP address – must be specified (unlike bind()) • addrlen is length of structure • client doesn’t need bind() – OS will pick ephemeral port • returns socket descriptor if ok, -1 on error int connect(int sockfd, const struct sockaddr *servaddr, socklen_t addrlen); Connect to server.
  • 26. Sending and Receiving int recv(int sockfd, void *buff, size_t mbytes, int flags); int send(int sockfd, void *buff, size_t mbytes, int flags); • Same as read() and write() but for flags – MSG_DONTWAIT (this send non-blocking) – MSG_OOB (out of band data, 1 byte sent ahead) – MSG_PEEK (look, but don’t remove) – MSG_WAITALL (don’t give me less than max) – MSG_DONTROUTE (bypass routing table)
  • 27. UDP Client-Server socket() bind() recvfrom() Server socket() sendto() recvfrom() Client (Block until receive datagram) sendto() Data (request) Data (reply) close() “well-known” port - No “handshake” - No simultaneous close - No fork()/spawn() for concurrent servers!
  • 28. Sending and Receiving int recvfrom(int sockfd, void *buff, size_t mbytes, int flags, struct sockaddr *from, socklen_t *addrlen); int sendto(int sockfd, void *buff, size_t mbytes, int flags, const struct sockaddr *to, socklen_t addrlen); • Same as recv() and send() but for addr – recvfrom fills in address of where packet came from – sendto requires address of where sending packet to

Editor's Notes

  • #18: Length field makes it easier for OS to handle