n received creates a socket for it. #include <sys/types.h> #include <sys/socket.h> int accept (int SOCID, struct sockaddr *addrPtr, int lengthPtr) ; // "socID" is the id of the socket. // "addrPtr" is a pointer to the address family. // "lengthPtr" is the maximum size of address structures that can be called. Based on the method of accepting connections, servers are classified into: Iterating server: In this type only one socket is opened by the server at a time. After completion of processing in that connection, the next connec- tion is accepted. Having only a single connection usually leads to poor performance and utilization. Forking server: In this type, after the connection is accepted from a cli- ent, a child process is forked off to handle the connection. Forking allows multiple clients to be connected to the server with a separate forked pro- cess handling a client connection. If data sharing is required then forking should be implemented with multithreading. Concurrent single server: In this type, the server can simultaneously wait on multiple open socket ids. The server process wakes up only when new data arrives from the client. This reduces the complexity of threads implementations. 5. Send: This function is used to send data. The return value of the function indicates the number of bytes sent. The send function is used in connection oriented implementation. Fundamentals of EMS, NMS and OSS/BSS #include <sys/types.h> #include <sys/socket.h> int send (int SOCID, const char *dataPtr, int length, int flag) ; // "socID" is the id of the socket. // "dataPtr" is a pointer to the data. // "length" is the number of data octets sent. // "flag" is to specify if it is a normal message (value 0) or requires special priority. 6. Recv: This function is used to receive data. The return value of the function indicates the number of bytes received. The receive function is used in con- nection oriented implementation. #include <sys/types.h> #include <sys/socket.h> int recv (int SOCID, char *dataPtr, int length, int fla