Home > Blockchain >  python servers send specific info from post requests
python servers send specific info from post requests

Time:08-13

I create a simple server in replit.com and I'm able get people post information from client but not able to send specific data to client from my server. I also have a domain name, and this only works for IPV6. website code(https://replit.com/@alexhernandez11/server)

server

import socket
import urllib.request

external_ip = urllib.request.urlopen('https://ident.me').read().decode('utf8')
print("v6 ip:",external_ip)

#socket AF_INET = v4
#socket AF_INET6 = v6
sock = socket.socket(socket.AF_INET6 , socket.SOCK_STREAM)
#s.bind(('',55555))
sock.listen(100)

while True:
    clients = []
    while True:

        clientsocket , address = sock.accept()
      
        clients.append(clientsocket)
        if len(clients) == 2:
            print('got 2 clients, sending details to each')
            break
        data = clientsocket.recv(1024)
        print("data :",data.decode())
        clientsocket.send(bytes(str("hello my dudes"),"utf-8"))
      
  
    c1 = clients.pop()
    c1_addr_port= c1
    c2 = clients.pop()
    c1_addr_port = c2


    c1.send(bytes(str("hello my dudes"),"utf-8"))
    c2.send(bytes(str("hello my dudes"),"utf-8"))

client

import requests 
url = 'https://server.alexhernandez11.repl.co'
#x = requests.get(url)

my_text = 'hello sending info121'
info = my_text.encode('utf-8')

x = requests.post(url, data = info)

print(x.content)
#r = requests.post('https://server.alexhernandez11.repl.co / post', data ="testin ")

CodePudding user response:

Well, you're running a TCP server and sending HTTP requests to it, so they except you to return proper HTTP response, not just some bytes.

This is what server looks like on my PC (obviously, with IPv4 and dirty code):

import socket

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind(("", 55555))
sock.listen(100)

RESPONSE = """HTTP/1.1 200 OK\r\n\
Date: Mon, 27 Jul 2009 12:28:53 GMT\r\n\
Server: Apache/2.2.14 (Win32)\r\n\
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT\r\n\
Content-Length: {length}\r\n\
Content-Type: text/html\r\n\
Connection: Closed\r\n\r\n\
{body}
"""

while True:
    clientsocket, address = sock.accept()
    data = clientsocket.recv(1024)
    print("data :", data.decode())

    text = "hello dude"
    content_length = len(text.encode("utf-8"))
    response = RESPONSE.format(length=content_length, body=text)
    clientsocket.send(response.encode("utf-8"))

  • Related