Sei sulla pagina 1di 7

Ex.

No Date: Echo Server and Client Aim: Aim of this exercise is to implement Echo server and client using TCP socket Algorithm- Server- echoes message sent by client 1. Create a TCP server socket. 2. Allocate memory using memset for data exchange. 3. Set initial parameters like sin_family and sin_port of server socket. 4. Bind the server socket. 5. Keep listening for client connection. 6. Once an invitation for connection is sensed, accept the connection. 7. Receive bytes from the accepted connection and echo it. 8. If q or Q is received from client, close the connection. 9. Terminate the program. Algorithm- Client- sends message to server 1. Create a TCP client socket. 2. Allocate memory using memset for data exchange. 3. Set initial parameters like sin_family and sin_port of server socket. 4. Read data to be echoed in the server. 5. Connect the client socket to server. 6. Send data through the established connection. 7. Send q or Q to client when all data have been sent. 8. Close the connection. Ex.No Date: Date and Time using TCP Aim: Aim of this exercise is to implement Date time server and client using TCP socket Algorithm- Server- echoes date and time sent by client 1. Create a TCP server socket. 2. Allocate memory using memset for data exchange. 3. Set initial parameters like sin_family and sin_port of server socket. 4. Bind the server socket. 5. Keep listening for client connection. 6. Once an invitation for connection is sensed, accept the connection. 7. Receive date and time from the accepted connection and echo it. 8. If q or Q is received from client, close the connection. 9. Terminate the program. Algorithm- Client- sends date and time to server 1. Create a TCP client socket. 2. Allocate memory using memset for data exchange. 3. Set initial parameters like sin_family and sin_port of client socket. 4. Read system date and time to be echoed in the server. 5. Connect the client socket to server. 6. Send date and time through the established connection. 7. Send q or Q to client when all data have been sent. 8. Close the connection.

Ex.No Date: Echo Server and Client using UDP Aim: Aim of this exercise is to implement echo server and client using UDP socket Algorithm- Server- echoes data sent by client 1. Create a UDP socket. 2. Set initial parameters like sin_family ,sin_port and sin_addr of server socket. 3. Bind the socket to client. 4. Waits for client in the port number. 5. Once data reaches through the port, it is received and echoed. 6. Terminate the program. Algorithm- Client- sends data to server 1. Create a UDP client socket. 2. Set initial parameters like sin_family ,sin_port and sin_addr of client socket. 3. Read input message. 4. Send to server. 5. Terminate the program.

Ex.No Date: Domain Name Server using TCP Aim: Aim of this exercise is to implement Domain Name Server using TCP socket Algorithm-Input File Creation 1. Declare a file pointer and a file is opened in w mode. 2. A set of entries to be filled up in DNS table are read one by one. 3. The records are written in file using file pointer. 4. Once the writing process is over, close the file pointer. Algorithm-Client Client resolves IP Address to Host Name and sends to Server Each DNS record is declared as a structure with the following fields. 1. IP Address and 2. Host Name 1. A TCP client socket is created. 2. Initial parameters like sin_family, sin_port and sin_addr are set. 3. Connect the client socket with the server. 4. Receive the IP address sent by server. 5. Open the input file created in r mode. 6. Read each record compare the received IP address with the IP Address field in the DNS record. 7. If a match is found, print the Host Name. 8. Send Host Name to server. 9. Close the TCP connection. Algorithm-Server Reads IP Address form user and sends to Client 1. Create a TCP server socket. 2. Initial parameters like sin_family, sin_port and sin_addr are set. 3. Bind the server socket with the client. 4. Listen in the port for client connection. 5. Accept the clients connection when client initiates. 6. Read IP Address from user.

7. Send it to client. 8. If q or Q is sent by client, server closes the connection. 9. Else prints the Host Name sent by client. 10. Loop back to step 6.

Ex.No Date: Remote Procedure Call Aim: Aim of this exercise is to implement Remote Procedure Call (RPC). Algorithm (i) msg.x 1. The prototype of the remote procedure PRINTMSG is given. It takes up a string argument and returns an integer. 2. Every remote procedure is assigned a unique hexa decimal number like 0x20000099. (ii) msg_server.c (the implementation of the remote procedure (i.e) the callee program in remote server) 1. The string message received as input argument from the client machine is printed in the remote server. 2. Once it is successfully printed in the remote server, a static integer is set to 1 and returned to the caller program in client machine. (iii) msg_client.c (the caller program in client machine) 1. Create a client handle. 2. The input message to be displayed is accepted as third argument from the client machine. 3. Call the remote procedure in remote server (RPC) from client machine with the input message as the input argument. 4. If static integer result sent from remote server holds 1, then the message is successfully delivered. Else an error has occurred. Procedure for compiling and running the program Type msg.x and compile using rpcgen as follows. >rpcegen msg.x >ls msg_svc.c msg_clnt.c msg.x msg.h >rpcgen Ss msg.x RPC server code is displayed. Copy and save in msg_server.c >rpcgen Sc msg.x RPC client code is displayed. Copy and save in msg_client.c To Compile >gcc o msg_server msg_server.c msg_svc.c lnsl >gcc o msg_client msg_client.c msg.clnt.c lnsl To run localhost> msg_server root localhost> msg_client localhost HAI where HAI is the input message to be displayed in the remote server.

Ex.No Date: Simulation of Sliding Window Aim: Aim of this exercise is to simulate the functioning of Sliding Window, flow control protocol. Algorithm Receiver Each Data frame is declared as a structure with the following fields. 1. Sequence Number 2. Left Pointer and 3. Right Pointer Steps: 1. TCP socket is created. 2. Initial parameters like sin_family, sin_port and sin_addr are set. 3. Allocate memory for message transfer. 4. Connect to the senders socket. 5. Receive data frame from sender. 6. Check if it is q or Q to close the connection else continue. 7. Print the received frame and its sequence number. 8. Increment the left pointer of the sliding window. 9. Display the sliding window entries between left and right pointers. 10. Send string ACK to sender. If connection is to be closed, send q or Q to sender. 11. Increment right pointer and loop back to step 5. Algorithm Sender Steps: 1. TCP client socket is created. 2. Initial parameters like sin_family, sin_port and sin_addr are set. 3. Bind server socket. 4. Listen in the port for connection. 5. Accept the receivers connection. 6. Data frame is read and sent to the receiver. 7. Left pointer and sequence number are incremented. 8. Receive the ACK sent by receiver. 9. Check if it is q or Q, and then close the connection. 10. Else loop back form step 6. Ex.No Date: Raw Sockets Aim: Aim of this exercise is to implement a C program using raw sockets. Algorithm_Checksum Calculation 1. The function takes up the 16 bit binary number and its length as the input arguments. 2. The sum of individual 16 bit data units is found. 3. If carry is generated exceeding its length equal to 16 bits, then 1 is added to LSB of sum. 4. Invert the sum value and that gives the checksum. Algorithm_Display 1. Open up the message and display the message along with the IP and ICMP header details into which it is present. Algorithm Listener

1. Create a raw socket. 2. ICMP request/reply is received. 3. displays bytes received Algorithm-Ping 1. Create a raw socket. 2. Receive packet. 3. Display Got Message 4. Set the following fields of ICMP Packet header like type, id, msg, sequence and checksum. 5. Sleep 6. Loop back to step 2. Algorithm Main 1. Set Protocol as ICMP. 2. Set host value. 3. Initial parameters like sin_family, sin_port and sin_addr are set. 4. If fork() returns 0 means parent(listener()) is executed else if positive value is returned a child process is created and ping() is executed. When ping() sleeps, listener() revives.

Built-in Structures and Important Functions 1. struct in_addr { in_addr_t s_addr; // 32 bit network IP v4 addr // network byte offered }; 2. IPv4 socket address structure: sockaddr_in struct sockaddr_in{ uint8_t sin_len; //length of structure (16) sa_family_t sin_family // AF_INET in_port_t sin_port //16 bit UDP or TCP port number struct in_addr sin_addr // 32 bit IPv4 address //network byte offered char sin_zero(8) //unused }; 3. Byte manipulation functions # include<strings.h> void bzero(void *dest, size_t nbytes); bzero sets the specified number of bytes to 0 in the destination. This function is used to initialize a socket address structure to 0. # include<string.h> void *memset(void *dest, int c, size_t len); memset sets the specified number of bytes to value c in the destination. 4. Address Conversion Functions # include<arpa/inet.h> int inet_aton(const char *strptr, struct in_addr *addrptr); in_addr_t inet_addr(const char *strptr); char *inet_ntoa(struct in_addr inaddr); inet_aton converts the character string pointed to by strptr into its 32 bit binary network byte ordered value which is stored through addrptr. If successful 1 is returned else 0 is returned. inet_addr function returns the 32 bit binary network byte ordered value. This function returns INADDR_NONE on error. inet_ntoa converts the 32 bit binary network byte ordered value into its its

corresponding dotted decimal string. 5. Socket function # include<sys/socket.h> int socket(int family, int type, int protocol) returns positive value if OK else returns -1. family - AF_INET IPv4 Protocol type -SOCK_STREAM - Stream socket SOCK_DGRAM - datagram socket SOCK_RAW -raw socket AF_INET with SOCK_STREAM supports TCP AF_INET with SOCK_DGRAM supports UDP 6. CONNECT function The CONNECT function is used by a TCP client to establish a connection with a TCP server. # include<sys/socket.h> int connect(int sockfd, const struct sockaddr *servaddr, socklen_t addrlen); returns 0 if OK, else returns -1. 7. BIND function The BIND function returns a protocol address to a socket. A process can bind a specific IP address to its socket. # include<sys/socket.h> int bind(int sockfd, const struct sockaddr *myaddr, socklen_t addrlen); returns 0 if OK, else returns -1. 8. LISTEN function The LISTEN function is used by TCP server. # include<sys/socket.h> int listen(int sockfd, int backlog); returns 0 if OK, else returns -1. 9. ACCEPT function The ACCEPT function is called by a TCP server to return the next completed connection from the front of the completed connection queue. # include<sys/socket.h> int connect(int sockfd, const struct sockaddr *cliaddr, socklen_t addrlen); returns 0 if OK, else returns -1. 10. # include<unistd.h> pid_t fork(void) returns 0 in child, process ID of child in parent, -1 on error. 11. sendto and recvfrom functions # include<sys/socket.h> ssize_t recvfrom(int sockfd, void *buff, size_t nbytes, int flags, struct sockaddr *from,socklen_t *addrlen); ssize_t sendto(int sockfd, void *buff, size_t nbytes, int flags, const struct sockaddr *to,socklen_t *addrlen); both return number of bytes read/written if OK, else returns -1. sockfd -Descriptor *buff -Pointer to buffer to read into/write from nbytes - Number of bytes flags For sendto *from -socket data structure containing the protocol address where data is to be sent addrlen - size of the above data structure

For recvfrom *to - socket data structure containing the protocol address giving who sent the datagram addrlen - size of the above data structure

Potrebbero piacerti anche