# 2 way communication Python socket

I'm trying to create a 2 way communication socket in python. The socket will listen for connections from the client until it gets the data formatted in string like this: 'PHONENUMBER|STATUS'. I will need to split that and convert it to json which will be sent via http request to a web api. When the api receives, it will handle the request and then it will return a status in json format which I will convert to string to return it to the client as string. I would like to have a professional opinion about my code and any additional ideas to what I would like to achieve would be appreciated.

import socket
import json
import requests
import httplib

HOST= '127.0.0.1'
PORT= 80

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

s.bind((HOST,PORT))
print ("Socket bound.")

#Start listening
s.listen(10)
print ("Socket Listening")

while True:
data = conn.recv(1024)

dictionary = dict(item.split("|") for item in data .split(";"))

json = json.dumps(dictionary, ensure_ascii=False)

r = requests.get(url, data=json)

print r.text

• Hi Sam, you are right, I posted this on Stackoverflow and it was formatted in the wrong way. I don't need the first split, that was my error, since the dictionary takes item and split it himself. the print at the end should not be like that. I explained what I intend to do, I added the code just as a reference or idea of what Im trying to achieve. I expect to have some sort of idea besides my own on how to implement my goal. Thanks for the suggestions! – AlexP Feb 3 '15 at 13:42
• I changed my comment to an "answer". – Sam Watkins Feb 3 '15 at 13:43
• @AlexDev4Life You should post a working piece of code at least, the errors are minor buy you should still fix them. – Ashwini Chaudhary Feb 3 '15 at 13:49
• Hi, Sorry everyone, I made some fixes on the code to make it clear. I posted this last night really quick. Thanks – AlexP Feb 3 '15 at 14:25
• hi, in python indentation is significant. Your last line print r.text needs to be indented same as the previous lines with six spaces (which is an unusual indent level, by the way - I suggest 4 or 8 spaces, or one tab). If this code works now, as you suggest, please provide an example session using e.g. telnet or a test program: what data you send to it, and what data you expect it to send back after talking to google. – Sam Watkins Feb 4 '15 at 11:04

This code does not compile, and has many bugs. Can you fix the errors in it?

url- = is a syntax error.

I don't recommend calling a variable split when you are using a method split, it's confusing.

You did not use that variable named split.

You did not define a variable message.

print 'r.text' should I suppose be print r.text.

I'm not sure about data = conn.recv(1024), what will happen if a request is longer than 1024 bytes?

This code needs to be debugged, it is not ready for code review. But it seems like a nice idea, and structurally okay, a good start. I could help you debug it and get it working if you like.

• Thanks, I formatted the text, it was all messed up. Now it can be reviewed – AlexP Feb 3 '15 at 14:29