Video streaming app using Open CV and python

What is 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.

What is Network Socket?
- A software structure within a network mode.
- Serves as an endpoint to send and receive data.
- Its properties are defined by network API.
- Exists only during the process of application.
- Externally identified by its socket address.

What are Socket Addresses?
- A combination of protocol type, IP address and Port number for data communication.
- A remote process establishes a socket in its protocol stack.
- The remote process then uses a networking API to connect to the application.
- It presents its own socket address for use.

Implementation of Socket.
In standard Internet Protocols like TCP and UDP: Socket Address is a combination of = **(IP address, Port Number)**, Much like Telephone and extension.

Datagram Sockets:-
- Connectionless Sockets User Datagram Protocol (UDP).
- Each packet sent or received is individually addressed.
- Order and reliability are not guaranteed.

Stream Sockets:-
- Connection-Oriented Sockets Transmission Control Protocol (TCP).
- Packets are sequenced with a unique flow of error-free data.
- Order and reliability are guaranteed.

Raw Sockets:-
- Allow direct sending and receiving of IP packets.
- Without any protocol-specific transport layer formatting
- When transmitting packets automatic addition of a header is optional
- Mostly used in security-related application
- Raw sockets are typically available in network equipment

Python Server Module:
- ** Socket Creation: **

clientsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
Socket Connect= clientsocket.connect((host_ip, port))
Socket Send= clientsocket.sendall()

Python Client Module:
Socket Creation: s= socket.socket(socket.AF_INET, socket.SOCK_STREAM)
Socket Bind: =s.bind((host_ip, port))
Socket Accept =conn, addr = s.accept()
Socket Listen:=s.listen(10)
Socket Receive= data += conn.recv(4096)

At server side:-
- With Open CV get video frames of the webcam.
- With “pickle” serialize frame to byte data.
- Pack each frame data using the struct module.
- Send data to client and display frame.

At client Side:-
- Receive packets and append them to data.
- Unpack the data using the struct module.
- Load the frame using the pickle.
- Display the frame at the client side.



Thank You

Task 3

Team: Summer_09_02

I am a sophomore!