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
โค้ด server.py
ในการรัน ต้องรันไฟล์ 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 ตามที่ต้องการครับ
ติดตามบทความต่อไปนะครับ
ขอบคุณครับ
โค้ด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() #จบการเชื่อมต่อ <== จากตัวอย่างวรรคนี้ผิดครับ