Skip to content

เขียนโปรแกรมเครือข่าย Socket ใน Python : ตอนที่ 1 เริ่มต้น

บทความนี้จะพาผู้อ่านไปรู้จัก  Socket ใน Python และลองเขียนโปรแกรมเครือข่าย Socket ใน Python กันครับ


Socket ในความหมายภาษาไทยแบบง่าย ๆ หมายถึง เต้ารับที่สามาเอาอุปกรณ์มาเชื่อมต่อกันได้ เหมือนเต้ารับของปลั๊กไฟ ในการเขียนโปรแกรม Socket คือ การสื่อสารระหว่างโปรแกรมบนเครือข่าย ในการเขียนโปรแกรมเชื่อมต่อการสื่อสารนั้นเราต้องใช้ Socket API โดยต้องระบุถึงโปรแกรมผ่าน Port Number และที่อยู่ของเครื่องอีกเครื่องหนึ่งบนเครือข่ายด้วย IP Address
สรุป

Socket Address = IP Address + Port Number

ในการเขียนโปรแกรมในปัจจุบัน ภาษาคอมพิวเตอร์ต่าง ๆ ได้รองรับ Socket กันไปนานแล้ว เช่น Java , Python , C/C++ เป็นต้น การใช้งาน Socket จึงไม่ได้จำกัดแค่ภาษาใดภาษาหนึ่ง

ในการเขียนโปรแกรมภาษา Python ได้รวม Socket API เข้ามาตั้งแต่ต้นแล้ว เวลาเรียกใช้งานต้อง

import socket

เข้ามาในโค้ดโปรแกรม ผมจะพาผู้อ่านไปลองเขียนโปรแกรมเครือข่าย Socket ส่งข้อมูลข้ามเครือข่ายกันครับ

ในการรับส่งข้อมูล ต้องมีผู้ส่งสาร สื่อ และผู้รับสาร โดยส่ง และรับข้อมูล โดย TCP ใน Python

โค้ด client.py

import socket

TCP_IP = "127.0.0.1"
TCP_PORT = 8081
BUFFER_SIZE = 1024
MESSAGE = "Hello, World!"

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((TCP_IP,TCP_PORT)) #เชื่อมต่อ
s.send(MESSAGE.encode('utf-8')) #ส่งข้อมูลโดยก่อนส่งได้เข้ารหัสตัวอักษรเป็น utf-8
data = s.recv(BUFFER_SIZE) #ดึงผลลัพธ์การส่งข้อมูล
s.close() #จบการเชื่อมต่อ

print("received data:", data) #แสดงผลลัพธ์การส่งข้อมูล

โค้ด server.py

import socket
TCP_IP = "127.0.0.1"
TCP_PORT = 8081
BUFFER_SIZE = 1024

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((TCP_IP,TCP_PORT)) #เชื่อมต่อ
s.listen(1)

conn, addr = s.accept() #รอรับข้อมูลที่ส่งมาจาก client.py
print('Connection address:', addr) #แสดงลายละเอียดของ client ที่เชื่อมต่อมา
while 1:
    data = conn.recv(BUFFER_SIZE)
    if not data: break
    print("received data:", data) #แสดงข้อมูลที่ส่งมา
    conn.send(data)  # echo
conn.close() #จบการเชื่อมต่อ

ในการรัน ต้องรันไฟล์ server.py ก่อนครับ เพราะ server.py เป็นไฟล์เซิร์ฟเวอร์สำหรับรับและส่งข้อมูล แล้วจึงค่อยรัน client.py

ผลลัพธ์

ไฟล์ server.py

Connection address: ('127.0.0.1', 60447)
received data: b'Hello, World!'

ไฟล์ client.py

received data: b'Hello, World!'

จากโปรแกรมข้างบนจะพบว่า ผมได้กำหนดค่า IP Address เป็น 127.0.0.1 นั้นคือส่งข้อมูลภายในเครื่อง เพื่อทดสอบโปรแกรมและกำหนดค่า Port Number เป็น 8081 โดย Port Number ต้องห้ามซ้ำกับ Port Number ที่มีอยู่ในระบบครับ หากเอาไปใช้งานผ่านเครือข่ายให้แก้ IP Address และ Port Number ตามที่ต้องการครับ

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

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

About wannaphong

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

5 thoughts on “เขียนโปรแกรมเครือข่าย Socket ใน Python : ตอนที่ 1 เริ่มต้น

  1. waa

    ผมลอง run ดูแล้วครับมัน กระพริมแวบเดียว แล้วดับโปรแกรมไปเลยทั้ง server และ client

    Reply
  2. waa

    ผม run หน้า command line สีดำ แล้วโปรแกรมมันกระพริบ แปบเดียว หายไปเลยครับ ไวมาก

    Reply
    1. wannaphong

      ลองใส่ input() เข้าไปในบรรทัดสุดท้ายครับ จะเห็นผลลัพธ์ครับ

      Reply
  3. ณัฐพล

    ขอคำแนะนำหน่อยครับ ถ้าต้องการเอาไปใช้แทน net send ในระบบเครือข่ายเราเอง ต้องทำอย่างไรบ้าง

    Reply

ใส่ความเห็น

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