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)
s.connect((HOST,PORT))

#Lets loop awaiting for your input
while True:
	command = raw_input('Enter your command: ')
	s.send(command)
	reply = s.recv(1024)
		if reply == 'Terminate':
			break
		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
try:
	s.bind((HOST, PORT))
	except socket.error:
	print 'Bind failed '

	s.listen(5)
	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':
		conn.send('Terminating')
		break
	else:
		reply = 'Unknown command'

	# Sending reply
	conn.send(reply)
	conn.close() # Close connections

PayPal

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

Patreon

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

image/svg+xml

Bitcoin (BTC)

Use this QR to keep me caffeinated in style with crypto-currency

SATA HAT

Add an SSD to Raspberry Pi 4 and turn it into a super-cooled NAS drive.

More HATs

Argon One

Enclose Raspberry Pi 4 inside this great case with custom I/O, cooling and GPIO

More cases on

Best Raspberry Pi Projects

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

0
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.

Free wireless doorbell (Amazon Dash button hack)

0
The most terrifying situation I can imagine* is missing a parcel

Raspberry Pi NAS: (NAS-pi) Modding like a boss #part2

0
Plex and RAID1 NAS drive build log

MagPi – auto-downloader

0
Grab each edition of Mag Pi as soon as possible!

HOW TO...

How to boot Raspberry Pi 4 from USB

0
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

0
Getting Raspberry Pi boards connected in seconds

Everything you need to start using JSON

0
It's JSON not Jason, just saying!

How to use Join App in NodeRED

0
The day finally comes where Join app is almost everywhere!

Driving LCD with Arduino and Raspberry Pi

0
Displaying things on an LCD screen is as easy as going through a cup of jellybeans while writing this tutorial!