Home Raspberry Pi Talking Raspberries, TCP socket protocol in Phyton

Talking Raspberries, TCP socket protocol in Phyton

Making Raspberry Pi talk to each other in Python

Majority of my communication is handled via AutoRemote. It links my pc, mobile, tablet and Raspberry PI 2 & 3. It’s all good and dandy most of the times until I try to issue a python command to the other RPI. Turns out Raspberry PI TCP socket protocol in python can candle client-host communication well. The socket in python is one of the low-level protocols allowing passing over simple commands between 2 devices over the internet. Communication is very fast, and script handling it is very lightweight.

Raspberry Pi TCP Socket protocol

Before we can use socket with python, we need to install this library on both devices (client and host) to do so simply run this in terminal:

sudo apt-get install socket

After prompt installation you will be able to use socket libraries within your python scripts. Below you can see the sample code that you can use in your creation. More details on the structure of the code in the video.
As you can see from the example below, nothing stops you from writing a simple chat protocol between both devices. Surely it won’t be a Whatsapp competitor, but it is something to explore for sure. Few things to remember:

  • Host connection has to be open, otherwise client will throw an exception
  • Port is linked to specific client and connection, you wont be able to share the connection with other devices
  • If one of the sides terminates, connection is lost and new Host session needs to be started

If you can live with these limitations, Raspberry Pi TCP socket provides you with lightning fast responsiveness. How would you use Raspberry Pi socket protocol?

PYTHON: Client
import socket

HOST = '' # Enter IP or Hostname of your server
PORT = 12345 # Pick an open Port (1000+ recommended), must match the server port
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

#Lets loop awaiting for your input
while True:
	command = raw_input('Enter your command: ')
	reply = s.recv(1024)
		if reply == 'Terminate':
		print reply
PYTHON: Server
import socket

HOST = '' # Server IP or Hostname
PORT = 12345 # Pick an open Port (1000+ recommended), must match the client sport
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print 'Socket created'

#managing error exception
	s.bind((HOST, PORT))
	except socket.error:
	print 'Bind failed '

	print 'Socket awaiting messages'
	(conn, addr) = s.accept()
	print 'Connected'

# awaiting for message
while True:
	data = conn.recv(1024)
	print 'I sent a message back in response to: ' + data
	reply = ''

	# process your message
	if data == 'Hello':
		reply = 'Hi, back!'
		elif data == 'This is important':
		reply = 'OK, I have done the important thing you have asked me!'

	#and so on and on until...
	elif data == 'quit':
		reply = 'Unknown command'

	# Sending reply
	conn.close() # Close connections


Nothing says "Thank you" better than keeping my coffee jar topped up!


Support me on Patreon and get an early access to tutorial files and videos.


Bitcoin (BTC)

Use this QR to keep me caffeinated with BTC: 1FwFqqh71mUTENcRe9q4s9AWFgoc8BA9ZU


Programable, ESP32 based awesome dev platform with 4.7 e-ink display by M5Stack

More HATs

Argon One M.2

Enclose Raspberry Pi 4 inside this great case with custom I/O, cooling and GPIO and M.2 SSD support

More cases on

Best Raspberry Pi Projects

How to use Raspberry PI as WOL (wake on lan) server

While you could wake up your PC from a mobile directly, having a dedicated server capable of doing so is the best solution. The reason is simple. You can hook up as many devices as you wish with a single endpoint. This is why Raspberry Pi is perfect for this.

How fast Raspberry Pi NAS is?

Let's see how fast Raspberry Pi NAS really is?

Argon18: Argon ONE SSD modification

Argon One case just got better - now you can boot it from USB without ruining the design thanks to Argon 18: Argon One SSD modification

The most pointless upgrade to my NAS – Raspberry Pi 3B+

This upgrade is almost pointless!


C/C++ and MicroPython SDK for Raspberry Pi Pico on Windows

A guide to SDK toolchain for Raspberry Pi Pico and C/C++ , Micropython on Windows.

A comprehensive guide to Grafana & InfluxDB

How to use Grafana and InfluxDB on Raspberry Pi for IoT sensors in home automation

How to boot Raspberry Pi 4 from USB

How to set up and boot Raspberry Pi 4 from USB drive - headless guide.

Raspberry Pi Zero, Raspberry Pi 3A+ WiFi without keyboard or cables

Getting Raspberry Pi boards connected in seconds

Everything you need to start using JSON

It's JSON not Jason, just saying!