• Network
    • Mạng cơ bản
    • Hyper-V
    • Linux
    • Windown Server 2012
  • Security
    • Basic Hacking
    • Deface
    • DDOS
    • Kali Linux / Parrot
    • SQL Injection
    • Virus-Trojan-Rat
  • Thủ thuật
    • Khóa Học Miễn Phí
    • Code
    • Mẹo Vặt Máy Tính
    • Facebook
    • Windows 7/8/10
    • Đồ Họa
    • Video
  • Software
    • Phần mềm máy tính
    • Phần mềm điện thoại
  • MMO
    • Advertisers – Publishers
    • Affiliate Program
    • Kiếm tiền bằng điện thoại
    • Pay Per Click – PPC
  • Tin tức
  • Kiến thức
AnonyViet
  • Network
    • Mạng cơ bản
    • Hyper-V
    • Linux
    • Windown Server 2012
  • Security
    • Basic Hacking
    • Deface
    • DDOS
    • Kali Linux / Parrot
    • SQL Injection
    • Virus-Trojan-Rat
  • Thủ thuật
    • Khóa Học Miễn Phí
    • Code
    • Mẹo Vặt Máy Tính
    • Facebook
    • Windows 7/8/10
    • Đồ Họa
    • Video
  • Software
    • Phần mềm máy tính
    • Phần mềm điện thoại
  • MMO
    • Advertisers – Publishers
    • Affiliate Program
    • Kiếm tiền bằng điện thoại
    • Pay Per Click – PPC
  • Tin tức
  • Kiến thức
No Result
View All Result
  • Network
    • Mạng cơ bản
    • Hyper-V
    • Linux
    • Windown Server 2012
  • Security
    • Basic Hacking
    • Deface
    • DDOS
    • Kali Linux / Parrot
    • SQL Injection
    • Virus-Trojan-Rat
  • Thủ thuật
    • Khóa Học Miễn Phí
    • Code
    • Mẹo Vặt Máy Tính
    • Facebook
    • Windows 7/8/10
    • Đồ Họa
    • Video
  • Software
    • Phần mềm máy tính
    • Phần mềm điện thoại
  • MMO
    • Advertisers – Publishers
    • Affiliate Program
    • Kiếm tiền bằng điện thoại
    • Pay Per Click – PPC
  • Tin tức
  • Kiến thức
No Result
View All Result
AnonyViet
No Result
View All Result

Cách viết ứng dụng chat đơn giản bằng Python

Elyx13 by Elyx13
15/10/2020 - Updated on 16/10/2020
in Code
Reading Time: 6 mins read
A A
9

Mục lục bài viết

  1. Socket là gì?
  2. Cấu trúc dự án
  3. Giới thiệu về lập trình socket
  4. Tạo socket đầu tiên (nodes)
  5. Tạo nodes Server
    1. Tạo file Server.py
    2. Giải thích code
      1. Gán địa chỉ IP và Port
      2. Lắng nghe kết nối
      3. Hàm send_sms()
      4. Hàm receive_sms( )
      5. Hàm Main()
      6. Gọi hàm
  6. Tạo nodes Client
    1. Tạo file Client.py

Trong bài viết này, mình sẽ hướng dẫn các bạn cách xây dựng một ứng dụng chat command line trong Python bằng thư viện socket. Nếu bạn chưa biết socket là gì, thì cũng đừng lo lắng. Mình sẽ giải thích nó ngay thôi.

viet ung dung chat bang python

Các bài viết liên quan

tạo extension nhắc việc chrome đơn giản

Hướng dẫn tự tạo Extension Chrome bằng Scratch

27/03/2021
hoc code powershell

Hướng dẫn lập trình PowerShell trên Windows

27/02/2021
quan tri mang co can hoc lap trinh

Làm Quản trị mạng có cần phải biết lập trình không?

26/02/2021 - Updated on 27/02/2021
code shell script

Cách viết Shell Script trong Linux/Unix

17/02/2021

Socket là gì?

Sockets là hai điểm cuối (end points) có thể giao tiếp với nhau trên cùng một máy tính hoặc trên các thiết bị không dây.

Socket chính là xương sống của hệ thống Internet, trong sâu thẳm tất cả những giao tiếp mà chúng ta thấy ngày nay đều hoạt động từ giao tiếp điểm này đến điểm khác.

Lập trình socket là cách làm cho hai node trên mạng giao tiếp với nhau. Một socket lắng nghe trên một cổng cụ thể tại một IP (máy chủ), trong khi một socket khác kết nối với socket kia để tạo kết nối (máy khách).

Các mô-đun socket đều mặc định có sẵn trong thư viện của Python. Do đó, bạn không cần phải cài đặt bất kỳ thư viện nào nữa.

Xem thêm:  Share Code phát hiện chế độ ẩn danh (incognito) trên Chrome

Cấu trúc dự án

Như cách giải thích ở trên, socket là các node có thể giao tiếp với nhau. Và trong dự án này, chúng ta sẽ triển khai 2 nodes bằng cách sử dụng socket, một là server và một là client.

Hai node đó sẽ gửi tin nhắn cho nhau như một ứng dụng chat bình thường.

Giới thiệu về lập trình socket

Mở command prompt và chạy thử các lệnh dưới đây.

Python 3.5.3 (default, Sep 27 2018, 17:25:39) 
[GCC 6.3.0 20170516] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import socket 
>>> socket.gethostname() #getting our local host name
'kalebu-PC'
>>> socket.gethostbyname('www.google.com') #getting IP of Google 
'172.217.170.4'

Như chúng ta thấy trong ví dụ trên, các bạn có thể lấy tên host của mình bằng phương thức gethostname và lấy địa chỉ IP của Google bằng phương thức gethostbyname.

Tạo socket đầu tiên (nodes)

Có rất nhiều giao thức truyền thông được sử dụng ngoài kia, tùy thuộc vào nơi nó đang được áp dụng, chẳng hạn như Transmission communication Protocol (TCP), User Datagram Protocol (UDP), File transfer Protocol (FTP),…

Để tạo ứng dụng Chat, các bạn sẽ sử dụng giao thức Transmission communication protocol (TCP). Nếu bạn không hiểu về giao thức này thì cũng không sao cả.

Để tạo một sockets (nodes) trong Python cho TCP, chúng ta sẽ cần các tham số chính sau đây:

  • socket.AF_INET nghĩa là socket thuộc IPv4..
  • socket.SOCK_STREAM nghĩa là kết nối được cấu hình bằng TCP Protocol

Tạo một socket trong python:

>>> import socket 
>>> node = socket.socket(socket.AF_INET, socket.SOCK_SaTREAM)

Nodes ở trên hoạt động như client hoặc server trên ứng dụng chat của chúng ta, tất cả phụ thuộc vào cách chúng ta cấu hình nó, vì chúng ta sẽ tạo 2 ứng dụng, đầu tiên chúng ta cần tạo nodes server.

Xem thêm:  [PyHack] Bài 1: MAC là gì? Cách thay đổi MAC bằng python

Tạo nodes Server

Mình là người lập trình hướng đối tượng (OPP). Do đó, mình sẽ triển khai nodes server dưới dạng class.

Vì mình đang xây dựng nodes này như một server, nên mình sẽ thêm một số chức năng cho phép nodes này lắng nghe yêu cầu kết nối đến.

Tạo file Server.py

import socket 
import threading

class ServerNode:
    def __init__(self):
        self.node = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        port_and_ip = ('127.0.0.1', 12345)
        self.node.bind(port_and_ip)
        self.node.listen(5)
        self.connection, addr = self.node.accept()

    def send_sms(self, SMS):
        self.connection.send(SMS.encode())

    def receive_sms(self):
        while True:
            data = self.connection.recv(1024).decode()
            print(data)

    def main(self):
        while True:
            message = input()
            self.send_sms(message)

server = ServerNode()
always_receive = threading.Thread(target=server.receive_sms)
always_receive.daemon = True
always_receive.start()
server.main()

Giải thích code

Gán địa chỉ IP và Port

port_and_ip = ('127.0.0.1', 12345)
self.node.bind(port_and_ip)

Việc ràng buộc địa chỉ IP và port với nodes của chúng ta giống như mình đang sử dụng chìa khoá IP để vào phòng của port nơi node server sống. Do đó, client phải cần chìa khoá IP này để kết nối với server.

Có nghĩa là node client phải truy cập chính xác IP server và port để kết nối với nodes server. Trong bản demo này, mình sẽ thực hiện kết nối trên một máy nhưng bạn cũng có thể thực hiện trong mạng được kết nối bằng cách thay đổi địa chỉ IP.

Lắng nghe kết nối

self.node.listen(5)
self.connection, addr = self.node.accept()

Nodes server sẽ lắng nghe kết nối đến và sau đó chấp nhận kết nối này.

Hàm send_sms()

def send_sms(self, SMS):
    self.connection.send(SMS.encode())

Phương thức này dùng để gửi tin nhắn khi được kết nối, tin nhắn phải ở dạng byte trong quá trình truyền, do đó tại sao chúng ta lại sử dụng phương thức encode () trên chuỗi.

Xem thêm:  Hướng dẫn code kiểm tra lỗ hổng bảo mật Sql Injection với Python script và cách phòng chống.

Hàm receive_sms( )

def receive_sms(self):
    while True:
        data = self.connection.recv(1024).decode()
        print(data)

Hàm này được sử dụng để nhận thông báo từ client trong suốt lúc chương trình hoạt động, nó sẽ được phân luồng để ngăn ứng dụng bị đơ/lag.

Hàm Main()

def receive_sms(self):
    while True:
        data = self.connection.recv(1024).decode()
        print(data)

Hàm này được sử dụng để hiển nhập tin nhắn từ server và gửi nó đến client.

Gọi hàm

server = ServerNode()
always_receive = threading.Thread(target=server.receive_sms)
always_receive.daemon = True
always_receive.start()
server.main()

5 dòng code trên là để tạo server và sau đó chạy nó bằng cách phân luồng các hàm nhận (hàm receive_sms).

Tạo nodes Client

Hầu hết mọi thứ trên node client đều tương tự như node server ngoại trừ thực tế là node client đang kết nối với server thay vì lắng nghe kết nối.

Tạo file Client.py

import socket 
import threading

class ClientNode:
    def __init__(self):
        self.node = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        port_and_ip = ('127.0.0.1', 12345)
        self.node.connect(port_and_ip)

    def send_sms(self, SMS):
        self.node.send(SMS.encode())

    def receive_sms(self):
        while True:       
            data = self.node.recv(1024).decode()
            print(data)

    def main(self):
        while True:
            message = input()
            self.send_sms(message)

Client = ClientNode()
always_receive = threading.Thread(target=Client.receive_sms)
always_receive.daemon = True
always_receive.start()
Client.main()

Vậy là xong rồi đó. Để chạy ứng dụng chat, bạn cần chạy file server.py trước rồi mới chạy file client.py.ứng dụng chat bằng Python

Ngoài tạo ứng dụng Chat ra, bạn còn có thể xem bài hướng dẫn tạo ứng dụng tra số điện thoại thuộc quốc gia nào bằng Python của Anonyviet nữa đó.

Tags: codehọc lập trìnhhọc lập trình Pythonlập trìnhpythonứng dụng chat
Previous Post

Danh sách 10 nữ hacker khét tiếng và xinh đẹp nhất thế giới

Next Post

Nhóm Hacker APT của Trung Quốc nhắm mục tiêu vào vào lĩnh vực truyền thông, tài chính và điện tử

Elyx13

Elyx13

Có người không dám bước vì sợ gãy chân, nhưng sợ gãy chân mà không dám bước đi thì khác nào chân đã gãy.

Related Posts

[Godot RPG]#5: Autotile - Lập trình game Godot Engine 1
Godot

[Godot RPG]#5: Autotile – Lập trình game Godot Engine

05/04/2021
tạo extension nhắc việc chrome đơn giản
Code

Hướng dẫn tự tạo Extension Chrome bằng Scratch

27/03/2021
[Godot RPG] #4 : Tilemap 2
Godot

[Godot RPG] #4 : Tilemap

04/03/2021 - Updated on 05/03/2021
hoc code powershell
Code

Hướng dẫn lập trình PowerShell trên Windows

27/02/2021
code shell script
Code

Cách viết Shell Script trong Linux/Unix

17/02/2021
code python keylogger
Code

Cách tạo KeyLogger bằng Python đơn giản nhất

14/02/2021
Next Post
Nhóm Hacker APT của Trung Quốc nhắm mục tiêu vào vào lĩnh vực truyền thông, tài chính và điện tử 3

Nhóm Hacker APT của Trung Quốc nhắm mục tiêu vào vào lĩnh vực truyền thông, tài chính và điện tử

guest
guest

Website này sử dụng Akismet để hạn chế spam. Tìm hiểu bình luận của bạn được duyệt như thế nào.

9 Comments
oldest
newest
Inline Feedbacks
View all comments
Shin Nguyễn | <span class="wpdiscuz-comment-count">15 comments</span>
Shin Nguyễn | 15 comments
6 months ago

làm sao để tạo ứng dụng chat với 2 thiết bị khác nhau ad ơi

Reply
AnonyViet | <span class="wpdiscuz-comment-count">1571 comments</span>
Admin
AnonyViet | 1571 comments
5 months ago
Reply to  Shin Nguyễn | <span class="wpdiscuz-comment-count">15 comments</span>

bạn khai báo IP đúng là được

Reply
nhung | <span class="wpdiscuz-comment-count">2 comments</span>
nhung | 2 comments
1 month ago
Reply to  AnonyViet | <span class="wpdiscuz-comment-count">1571 comments</span>

2 thiết bị ở 2 modem khác nhau dùng code này được ko ad

Reply
AnonyViet | <span class="wpdiscuz-comment-count">1571 comments</span>
Admin
AnonyViet | 1571 comments
1 month ago
Reply to  nhung | <span class="wpdiscuz-comment-count">2 comments</span>

ra ngoài môi trường Internet thì phải VPN về mới chat được

Reply
nhung | <span class="wpdiscuz-comment-count">2 comments</span>
nhung | 2 comments
1 month ago
Reply to  AnonyViet | <span class="wpdiscuz-comment-count">1571 comments</span>

ok! cảm ơn ad rất nhiều

Reply
Bảo | <span class="wpdiscuz-comment-count">1 comments</span>
Bảo | 1 comments
6 months ago

ad ơi, sao khi em code xong và chạy thì nó báo WinError 10048 trong file Server.py, em đã tìm kiếm cách fix trên StackOverflow nhưng không fix được, anh xem có cách nào fix ko ạ!

Reply
AnonyViet | <span class="wpdiscuz-comment-count">1571 comments</span>
Admin
AnonyViet | 1571 comments
5 months ago
Reply to  Bảo | <span class="wpdiscuz-comment-count">1 comments</span>

bạn chụp hình lại giúp mình xem

Reply
Elyx13 | <span class="wpdiscuz-comment-count">17 comments</span>
Author
Elyx13 | 17 comments
5 months ago
Reply to  AnonyViet | <span class="wpdiscuz-comment-count">1571 comments</span>

Bạn inbox page để hỗ trợ cho dễ nhé

Reply
Công | <span class="wpdiscuz-comment-count">1 comments</span>
Công | 1 comments
5 months ago

làm sao nổi tên người gửi, người nhận

Reply
wpdiscuz   wpDiscuz

Liên hệ Quảng Cáo

Lien he AnonyViet

Đối tác

Fshare

Các bài mới

4 cách phá mật khẩu Windows 10 4

4 cách phá mật khẩu Windows 10

18/04/2021
tao subtitle tieng viet tu dong

Cách tạo tự động Phụ đề tiếng Việt cho Video

17/04/2021
chrome 90

Những tính năng mới của Chrome 90 mới phát hành

17/04/2021
tim hieu nhom hacker Anonymous

Tìm hiểu nhóm Nhóm Hacker Anonymous khét tiếng nhất thế giới

15/04/2021
cpu dot ngot tang 100

Tại sao khi mở Task Manager CPU đột ngột tăng 100% rồi giảm xuống

15/04/2021

Ads

Giới thiệu

AnonyViet

AnonyViet

Nơi chia sẻ những kiến thức mà bạn chưa từng được học trên ghế nhà trường!

Chúng tôi sẵn sàng đón những ý kiến đóng góp, cũng như bài viết của các bạn gửi đến AnonyViet.

Hãy cùng AnonyViet xây dựng một cộng đồng CNTT lớn mạnh nhất!

Giới thiệu

AnonyViet là Website chia sẻ miễn phí tất cả các kiến thức về công nghệ thông tin. AnonyViet cung cấp mọi giải pháp về mạng máy tính, phần mềm, đồ họa và MMO.

Liên kết

Game B52
Tải game đổi thưởng online
Chơi game bài hot 2020
Chơi game bài đổi thưởng online
RikVip
iwin888
Gam Víp
88vin link

Liên hệ đặt Ads: [email protected]

Liên hệ

Email: anonyviet.com[@]gmail.com

1409 Hill Street #01-01A
Old Hill Street Police Station
Singapore 179369

Bài viết mới

  • 4 cách phá mật khẩu Windows 10
  • Cách tạo tự động Phụ đề tiếng Việt cho Video
  • Những tính năng mới của Chrome 90 mới phát hành
  • Tìm hiểu nhóm Nhóm Hacker Anonymous khét tiếng nhất thế giới
  • Tại sao khi mở Task Manager CPU đột ngột tăng 100% rồi giảm xuống
  • Phương pháp đính kèm Virus bằng file Word để Hack máy tính
  • Giới thiệu về AnonyViet
  • Liên hệ Quảng cáo
  • Privacy & Policy
  • Contact

© 2019 AnonyViet - Chúng tôi mang đến cho bạn những kiến thức bổ ích về Công nghệ.

No Result
View All Result
  • Network
    • Mạng cơ bản
    • Hyper-V
    • Linux
    • Windown Server 2012
  • Security
    • Basic Hacking
    • Deface
    • DDOS
    • Kali Linux / Parrot
    • SQL Injection
    • Virus-Trojan-Rat
  • Thủ thuật
    • Khóa Học Miễn Phí
    • Code
    • Mẹo Vặt Máy Tính
    • Facebook
    • Windows 7/8/10
    • Đồ Họa
    • Video
  • Software
    • Phần mềm máy tính
    • Phần mềm điện thoại
  • MMO
    • Advertisers – Publishers
    • Affiliate Program
    • Kiếm tiền bằng điện thoại
    • Pay Per Click – PPC
  • Tin tức
  • Kiến thức

© 2019 AnonyViet - Chúng tôi mang đến cho bạn những kiến thức bổ ích về Công nghệ.

wpDiscuz