File Sharing by Using TCP Protocol
File Sharing by Using TCP Protocol
Experiment No. –
Problem Statement:
To Perform File Transfer in Client & Server Using TCP/IP.
Objectives:
What is a socket?
The client-server model.
Remote Communication
Outcome:
Develop Client-Server architectures and prototypes by the means of correct standards and technology.
Software Requirements:
Python, Open-source Linux operating system.
THEORY:
The basics
What is mean by Socket
Sockets allow communication between two different processes on the same or different machines. To be
more precise, it's a way to talk to other computers using standard Unix file descriptors. In Unix, every
I/O action is done by writing or reading a file descriptor. A file descriptor is just an integer associated
with an open file and it can be a network connection, a text file, a terminal, or something else.
To a programmer, a socket looks and behaves much like a low-level file descriptor. This is because
commands such as read() and write() work with sockets in the same way they do with files and pipes.
Types of Socket
A Unix Socket is used in a client-server application framework. A server is a process that performs some
functions on request from a client. Most of the application-level protocols like FTP, SMTP, and POP3
make use of sockets to establish connection between client and server and then for exchanging data.
Socket Types
There are four types of sockets available to the users. The first two are most commonly used and the last
two are rarely used.
Processes are presumed to communicate only between sockets of the same type but there is no restriction
that prevents communication between sockets of different types.
Stream Sockets − Delivery in a networked environment is guaranteed. If you send through the stream
socket three items "A, B, C", they will arrive in the same order − "A, B, C". These sockets use TCP
(Transmission Control Protocol) for data transmission. If delivery is impossible, the sender receives an
error indicator. Data records do not have any boundaries.
socket abstractions. These sockets are normally datagram oriented, though their exact characteristics are
dependent on the interface provided by the protocol. Raw sockets are not intended for the general user;
they have been provided mainly for those interested in developing new communication protocols, or for
gaining access to some of the more cryptic facilities of an existing protocol.
Sequenced Packet Sockets − They are similar to a stream socket, with the exception that record
boundaries are preserved. This interface is provided only as a part of the Network Systems (NS) socket
abstraction, and is very important in most serious NS applications. Sequenced-packet sockets allow the
user to manipulate the Sequence Packet Protocol (SPP) or Internet Datagram Protocol (IDP) headers on
a packet or a group of packets, either by writing a prototype header along with whatever data is to be
sent, or by specifying a default header to be used with all outgoing data, and allows the user to receive
the headers on incoming packets.
As shown in the figure, the steps for establishing a TCP socket on the client side are the following:
Create a socket using the socket() function;
Connect the socket to the address of the server using the connect() function;
Send and receive data by means of the read() and write() functions.
Close the connection by means of the close() function.
The steps involved in establishing a TCP socket on the server side are as follows:
Create a socket with the socket() function;
Bind the socket to an address using the bind() function;
Listen for connections with the listen() function;
Accept a connection with the accept() function system call. This call typically blocks until a client
connects with the server.
Send and receive data by means of send() and receive().
Close the connection by means of the close() function.
Server code :-
# This file will be used for recieving files over socket connection.
import os
import socket
import time
Conclusion:
________________________________________________________________________