Swiftorial Logo
Home
Swift Lessons
Matchups
CodeSnaps
Tutorials
Career
Resources

Network Programming with Sockets in Python

1. Introduction

Network programming allows for communication between different computers over a network. In Python, sockets provide a way to achieve this communication. A socket is an endpoint for sending or receiving data across a computer network.

2. Creating a Socket

To create a socket in Python, you can use the socket module. Here’s how to create a basic TCP socket:

import socket

# Create a TCP/IP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
                

3. Building a Server

To build a server, you need to bind the socket to a specific address and port, and then listen for incoming connections:

import socket

# Create a TCP/IP socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('localhost', 65432))
server_socket.listen()

print("Server is listening on port 65432...")

while True:
    connection, client_address = server_socket.accept()
    try:
        print(f"Connection from {client_address}")
        data = connection.recv(1024)
        print(f"Received: {data.decode()}")
        connection.sendall(b"Hello, Client!")
    finally:
        connection.close()
                

4. Building a Client

To connect to the server, you can create a client socket and send data:

import socket

client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('localhost', 65432))

client_socket.sendall(b"Hello, Server!")
data = client_socket.recv(1024)

print(f"Received: {data.decode()}")
client_socket.close()
                

5. Best Practices

When working with sockets, consider the following best practices:

  • Always handle exceptions to prevent crashes.
  • Close sockets properly using close().
  • Use timeouts to avoid hanging connections.
  • Implement threading for handling multiple clients.

6. FAQ

What is a socket?

A socket is an endpoint for sending or receiving data across a computer network.

What is the difference between TCP and UDP?

TCP is connection-oriented and reliable, while UDP is connectionless and faster but less reliable.

How can I handle multiple clients in a server?

You can use threading or asynchronous programming to manage concurrent connections.