100 likes | 315 Views
Sockets API. Overview Sockets with UDP Sockets with TCP Fast Sockets (Fast UDP) IP Multicasting. Sockets Overview. WHAT IT IS: Used by applications to send and receive data over TCP/IP networks WHAT IT DOES: Supports UDP and TCP protocols Sends and receives data between applications
E N D
Sockets API Overview Sockets with UDP Sockets with TCP Fast Sockets (Fast UDP) IP Multicasting
Sockets Overview WHAT IT IS: • Used by applications to send and receive data over TCP/IP networks WHAT IT DOES: • Supports UDP and TCP protocols • Sends and receives data between applications SET-UP CONDITIONS: • Socket() call creates communications endpoints • Bind() links a network address to the socket • Other calls depend on the protocol
Socket-Layer Protocols • Application Level Network Communication Protocols • Ride on Top of Either TCP/IP for Guaranteed Delivery or UDP/IP for Minimizing Network Traffic (not Guaranteed) • Inconspicuous Communication for Security INTERNET Socket Socket Connection
UDP Connection Terminal Terminal Socket Connection Socket created on specific port, data is sent without connection established. Remote terminal must have been passively ‘listening’ on that port. Possible Socket Implementations TCP Connection Server Client Socket Connection Client creates socket, requests connection on specific IP port. Server must have been passively ‘listening’ on that port.
DATA PIPE Sockets Flow - UDP Device 1 Device 2 Create Create Bind Bind SendTo SendTo NETWORK RecvFrom RecvFrom
DATA PIPE Sockets Flow - TCP Create Client Server Create (Associate Socket with own IP addr, port) Bind Bind Connect NETWORK Listen Accept Send Send Recv Recv
Example API call #include <sockapi.h> Declaration int connect(int socket_descriptor, struct sockaddr_in *ptr2Inet_socket_addr_struct, int addrlen); Establish Connection /* Setup the server's sockaddr_in struct */ bzero(&serverAddress, sizeof(serverAddress)); serverAddress.sin_family = AF_INET; serverAddress.sin_port = htons(13); serverAddress.sin_addr.s_addr = htonl(0xC75CBA53); /* 199.92.186.83 */ int rc = (connect(69, &serverAddress, sizeof(serverAddress)); Return value 0 if successful, otherwise -1.
Fast UDP (Fast Sockets) • Socket-like API that bypasses most of the stack • Advantages of Fast UDP API: performance - potentially double the data rate • Advantages of Normal Sockets API: portable, richer API, TCP support • Utilizes a different set of API calls
Standard accept bind connect closesocket connect getpeername gGetsockname getsockopt listen recv recvfrom send sendto setsocketopt shutdown socket Fast UDP fBind fGetBuf fSendTo fSockInit fSocket fSocketClose Fast UDP vs. Standard Socket API’s
IP Multicasting • NET+OS TCP/IP supports Level 2 IP multicast as defined by RFC 1112, which includes sending and receiving IP multicast packets and implementation of the Internet Group Membership Protocol (IGMP) V1. • To enable a static interface to have multicast capability, the n_mcastlist field of the netstatic entry to point be set to a call back function, mcastlist. The function mcastlist is defined in the file narmenet.c (in the src\bsp directory). • If n_mcastlist field of a static interface be set to NULL, that interface won't be able to send/receive multicast packets. • The setsockopt() function is used to add/delete memberships and set multicast options for a particular socket.