Socket Programming in Python | Sending and Receiving Data with Sockets in Python | Edureka
Table of Contents
Introduction
This tutorial provides a comprehensive guide to socket programming in Python, focusing on how to send and receive data using sockets. Socket programming is essential for building networked applications, allowing communication between clients and servers. By following this guide, you will learn the fundamentals of creating a client-server architecture using Python's socket module.
Step 1: Understanding Sockets
- Definition of Sockets: Sockets are endpoints for sending and receiving data across a network. They enable communication between different processes, either on the same machine or over a network.
- Types of Sockets:
- Stream Sockets (TCP): Used for reliable, two-way communication.
- Datagram Sockets (UDP): Used for connectionless communication, which is faster but less reliable.
Step 2: Setting Up a Socket Server
- Import the Required Module:
import socket
- Create a Socket Object:
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- Bind the Socket:
- Choose a host and port number:
host = '127.0.0.1' # Localhost port = 12345 server_socket.bind((host, port))
- Choose a host and port number:
- Listen for Incoming Connections:
server_socket.listen(5) # Allow up to 5 connections
- Accept Connections:
client_socket, addr = server_socket.accept() # Accept a connection print(f"Connection from {addr} has been established!")
Step 3: Sending Data from Server to Client
- Send Data:
message = "Hello, Client!" client_socket.send(message.encode('utf-8')) # Send message to client
- Close the Connection:
client_socket.close() # Close the client connection
Step 4: Setting Up a Socket Client
- Create a Socket Object:
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- Connect to the Server:
client_socket.connect((host, port)) # Connect to server
- Receive Data:
data = client_socket.recv(1024) # Buffer size of 1024 bytes print("Received from server:", data.decode('utf-8')) # Decode and print the data
- Close the Connection:
client_socket.close() # Close the client socket
Step 5: Transferring Python Objects
- Using the
pickle
Module:- Import the module:
import pickle
- Serialize an Object:
data = {'key': 'value'} serialized_data = pickle.dumps(data) # Convert object to bytes client_socket.send(serialized_data) # Send serialized data
- Deserialize on the Receiving End:
received_data = client_socket.recv(1024) deserialized_data = pickle.loads(received_data) # Convert bytes back to object print(deserialized_data)
- Import the module:
Conclusion
In this tutorial, you learned the basics of socket programming in Python, including setting up a server, creating a client, and transferring data. By utilizing Python's socket and pickle modules, you can build robust network applications that facilitate communication between different processes. Next, consider experimenting with error handling and implementing more complex client-server interactions to deepen your understanding of socket programming.