0
0
PythonHow-ToBeginner · 3 min read

How to Send Data Over Socket in Python: Simple Guide

To send data over a socket in Python, use the socket.send() or socket.sendall() methods after creating and connecting a socket. Data must be sent as bytes, so convert strings using encode() before sending.
📐

Syntax

Here is the basic syntax to send data over a socket in Python:

  • socket.send(bytes_data): Sends data to the connected socket. It may send fewer bytes than requested.
  • socket.sendall(bytes_data): Sends all data or raises an error if it fails.
  • Data must be in bytes, so convert strings using encode().
python
sock.sendall(data.encode())
💻

Example

This example shows a simple client sending a message to a server using sockets. The client connects, sends a message, and closes the connection.

python
import socket

# Create a socket object
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# Connect to server at localhost on port 12345
sock.connect(('127.0.0.1', 12345))

# Message to send
message = 'Hello, server!'

# Send message as bytes
sock.sendall(message.encode())

# Close the socket
sock.close()
⚠️

Common Pitfalls

Common mistakes when sending data over sockets include:

  • Not converting strings to bytes before sending, causing errors.
  • Using send() without checking if all data was sent.
  • Not handling exceptions for connection errors.
  • Forgetting to close the socket after sending data.

Always use sendall() to ensure all data is sent, and encode strings properly.

python
import socket

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('127.0.0.1', 12345))

# Wrong: sending string directly (raises TypeError)
# sock.send('Hello')

# Right: encode string to bytes
sock.sendall('Hello'.encode())
sock.close()
📊

Quick Reference

Tips for sending data over sockets in Python:

  • Use socket.socket() to create a socket.
  • Connect with socket.connect() for clients.
  • Send data as bytes using sendall().
  • Convert strings with encode() before sending.
  • Always close sockets with close() when done.

Key Takeaways

Always convert string data to bytes using encode() before sending over a socket.
Use socket.sendall() to ensure all data is sent without partial sends.
Create and connect sockets properly before sending data.
Handle exceptions and close sockets to avoid resource leaks.
Avoid sending raw strings directly to prevent TypeErrors.