Skip to content

รับส่งข้อมูล json ผ่านเครือข่ายด้วย http.server

สวัสดีผู้อ่านทุกท่านครับ บทความนี้จะพาผู้อ่านไปเขียนโปรแกรมรับส่งข้อมูล json ผ่านเครือข่ายด้วย http.server กันครับ

หากเราจะนำข้อมูลที่อยู่อีกเครื่องหนึ่งส่งมาอีกเครื่องหนึ่งโดยอยู่บนเครือข่ายเดียวกัน ผมจึงเกิดความคิดว่า หากเราจะเขียนโปรแกรมรับส่งข้อมูล json ผ่านเครือข่ายเดียวกันด้วย http.server ได้ไหม ผมเลยลองเขียนดูครับ

ผมนำความรู้ที่ได้จากบทความ

เราจะไปเขียนโปรแกรมกันครับ

ผมต้องการส่งข้อมูล [1,2,3,{'4': 5,'6': 7}] โดยจะแปลงเป็น json แล้วส่งไปยังเครื่องคอมที่เรียกข้อมูล แล้วแปลง json เป็นข้อมูลต้นฉบับอีกทีครับ

ส่วน server

import http.server
import json
#ข้อมูลที่แปลงเป็น json
data = json.dumps([1,2,3,{'4': 5,'6': 7}])

HOST_NAME = "192.168.1.100" #ที่อยู่ไอพีของเครื่อง server บนเครือข่าย
hostPort = 8088
class MyHandler(http.server.BaseHTTPRequestHandler):
    def do_GET(self):
           self.send_response(200)
           self.send_header("Content-type", "text/html")
           self.end_headers()
           print(self.wfile)
           content = [data]
           self.wfile.write("".join(content).encode("UTF-8")) #ส่งข้อมูล
server_class = http.server.HTTPServer
httpd = server_class((HOST_NAME, hostPort),MyHandler)
httpd.serve_forever()

เมื่อเราเรียก http://192.168.1.100:8088 จะพบกับข้อมูล json


ข้อมูล json ที่ได้จาก server
ต่อไปเราจะเขียนส่วนรับข้อมูลกันครับ
ส่วนรับข้อมูล

>>> import urllib.request
>>> import json
>>> data = urllib.request.urlopen('http://192.168.1.100:8088') #เรียกข้อมูลจาก server
>>> to = data.read()
>>> a = json.loads(to.decode('utf-8')) #เนื่องจาก server เข้ารหัสเป็น UTF 8 ต้องถอดก่อนใช้งานข้อมูลครับ
>>> print(a)
[1, 2, 3, {'4': 5, '6': 7}]

จะเห็นได้ว่า เรารับส่งข้อมูลผ่านเครือข่ายได้สำเร็จแล้วครับ 😀
ถ้าเราเอาความรู้นี้ไปใช้กับ SL4A บน Android ให้ส่งข้อมูลกลับมายังคอมพิวเตอร์ โดยผ่านเครือข่ายบน Wi-Fi เหมือนที่ผมทำ โดยที่อยู่ไอพีเครื่อง Android บน Wi-Fi ดูได้จาก Wi-Fi บนมือถือ Android ครับ

ติดตามบทความต่อไปนะครับ
ขอบคุณครับ

Published on Categories เครือข่าย

About wannaphong

วรรณพงษ์ ภัททิยไพบูลย์ ผู้ดูแลเว็บ wannaphong.com และผู้เขียนบทความบล็อกนี้ นักศึกษาชั้นปีที่ 1 สาขาวิทยาการคอมพิวเตอร์และสารสนเทศ คณะวิทยาศาสตร์ประยุกต์และวิศวกรรมศาสตร์ มหาวิทยาลัยขอนแก่น วิทยาเขตหนองคาย

2 thoughts on “รับส่งข้อมูล json ผ่านเครือข่ายด้วย http.server

  1. wannaphong

    ไฟล์ Python 3 ปกติ ใช้โมดูล ไลบรารีมาตรฐานบน Android + SL4A ได้ครับ

    Reply

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องที่ต้องการถูกทำเครื่องหมาย *