Skip to content

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

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

รายละเอียดเบื้องต้นของโมดูล Socket ใน Python :

socket.listen() – listen สำหรับการเชื่อมต่อขาเข้า
socket.accept() – ยอมรับการเชื่อมต่อขาเข้า
socket.recv() – ส่งกลับข้อมูลที่เข้ามาเป็น string
socket.send() – ส่งข้อมูลไปยังไคลเอนต์ socket
socket.close() – ปิดซ็อกเก็ต

ผมลองเขียนโปรแกรมดูตามนี้ครับ

server.py

import socket
host = "127.0.0.1" #กำหนดค่า host ที่เชื่อมต่อ
port = 8081 #กำหนดค่าพอร์ตในการสื่อสาร
addr = (host,port) #รวม host กับค่าพอร์ตเข้าเป็น tuple เดียวกัน
bufsize = 4096 #ขนาดบัฟเฟอร์ข้อมูล

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #สร้าง object ในการเชื่อมต่อ socket
print("Socket created")
server.bind((addr)) #เชื่อมต่อ
server.listen(5) #5 เป็นจำนวนสูงสุดของการเชื่อมต่อคิวที่เราจะอนุญาต
conn, addr = server.accept() #รับข้อมูลการเชื่อมต่อขาเข้า
print('Connection address:', addr) #แสดงลายละเอียดของ client ที่เชื่อมต่อมา
count = 0
while (count <= 5):
    data = conn.recv(bufsize)
    if not data: break
    print("received data:", data) #แสดงข้อมูลที่ส่งมา
    conn.send(data)  # echo
    count = (count + 1)
conn.close() #จบการเชื่อมต่อ

client.py

import socket
host = "127.0.0.1" #กำหนดค่า host ที่เชื่อมต่อ
port = 8081 #กำหนดค่าพอร์ตในการสื่อสาร
addr = (host,port) #รวม host กับค่าพอร์ตเข้าเป็น tuple เดียวกัน
bufsize = 4096 #ขนาดบัฟเฟอร์ข้อมูล

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect((addr)) #เชื่อมต่อ
count = 0
while (count <= 5):
	MESSAGE = input("Input:")
	client.send(MESSAGE.encode('utf-8')) #ส่งข้อมูลโดยก่อนส่งได้เข้ารหัสตัวอักษรเป็น utf-8
	data = client.recv(bufsize) #ดึงผลลัพธ์การส่งข้อมูล
	print("received data:", data) #แสดงผลลัพธ์การส่งข้อมูล
	count = (count + 1)
client.close() #จบการเชื่อมต่อ

เวลารันให้รัน server.py ก่อนนะครับ แล้วค่อยรัน client.py จากตัวอย่างโปรแกรมข้างบนผมใช้เพียงโมดูล socket นอกจากนั้น นับตั้งแต่ Python 2.6 ขึ้นมาได้มาโมดูลหนึ่งที่สำหรับใช้ทำ server โดยเฉพาะ นั้นคือ โมดูล socketserver อ่านรายละอียดเพิ่มเติมได้ที่ https://docs.python.org/3/library/socketserver.html และอ่านรายละเอียดการใช้งาน socket ใน Python ได้ที่ https://docs.python.org/3.4/howto/sockets.html

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

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

About wannaphong

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

ใส่ความเห็น

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