Python Networking

Socket Programming:

Python socket programming involves writing programs that utilize sockets to interact with each other on a network.

A socket serves as an endpoint in the bidirectional communication between two applications on the network. It enables programs to share data irrespective of whether they run on one computer or different machines linked via a network.

TCP Server and Client Example:

TCP Server:

Python TCP server program listens for incoming connections over a network using the TCP protocol.

It connects with a client, communicates with it by sending and receiving data and then ends when the communication is done. TCP supplies dependable, connection-oriented interaction between two hosts.

                                  
                                    import socket

# Create a TCP socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# Bind the socket to a specific address and port
server_address = ('localhost', 12345)
server_socket.bind(server_address)

# Listen for incoming connections
server_socket.listen(5)
print("Server is listening for connections...")

while True:
    # Wait for a connection
    client_socket, client_address = server_socket.accept()
    print(f"Connection from {client_address}")

    # Send a welcome message to the client
    message = "Welcome to the server!"
    client_socket.send(message.encode())

    # Close the connection
    client_socket.close()
                                  
                                

TCP Client:

A Python TCP (Transmission Control Protocol) client is a program that communicates with a TCP server using TCP over a network.

It creates a link with the server, talks with it passing and viewing data, and then finally closes the link after the communication is finished. TCP delivers reliable, connection-oriented communication between two hosts.

                                  
                                    import socket

# Create a TCP socket
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# Connect to the server
server_address = ('localhost', 12345)
client_socket.connect(server_address)

# Receive data from the server
data = client_socket.recv(1024)
print(f"Received: {data.decode()}")

# Close the connection
client_socket.close()
                                  
                                

UDP Server and Client Example:

UDP Server:

A UDP (User Datagram Protocol) server in Python is a program that listens for datagrams (network packets) sent over a network using UDP.

Unlike TCP, UDP is connectionless and opens no reliable, connection-oriented communication channel. Each UDP server deals with individual datagrams to ensure independent operation, which is different from the conditions of a continuous connection with the client.

                                  
                                    import socket

# Create a UDP socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# Bind the socket to a specific address and port
server_address = ('localhost', 54321)
server_socket.bind(server_address)

print("Server is listening for UDP messages...")

while True:
    # Receive data from the client
    data, client_address = server_socket.recvfrom(1024)
    print(f"Received from {client_address}: {data.decode()}")

    # Send a response to the client
    response = "Hello, client!"
    server_socket.sendto(response.encode(), client_address)
                                  
                                

UDP Client:

A Python UDP (User Datagram Protocol) client is a program that sends datagrams (packets) to a UDP server over a network using the UDP protocol.

Unlike TCP, UDP is a connectionless protocol that does not set up a reliable, connection-oriented communication channel. UDP clients send datagrams separately and do not maintain a continual connection with servers.

                                  
                                    import socket

# Create a UDP socket
client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# Send data to the server
server_address = ('localhost', 54321)
message = "Hello, server!"
client_socket.sendto(message.encode(), server_address)

# Receive the response from the server
data, server_address = client_socket.recvfrom(1024)
print(f"Received from {server_address}: {data.decode()}")

# Close the connection
client_socket.close()
                                  
                                

Making HTTP Requests:

Using the requests Library:

                                  
                                    pip install requests
                                  
                                
                                  
                                    import requests

# Making a GET request
response = requests.get('https://www.example.com')

# Print the content of the response
print(response.text)
                                  
                                

These examples cover basic networking concepts in Python, including TCP and UDP socket programming, as well as making HTTP requests using the requests library.

Depending on your needs, you may choose different networking modules and libraries for more advanced applications.