Máy khách-máy chủ python
Ở đây mình sẽ dùng pycham để code và python 3, đầu tiên mình sẽ tạo mới 1 project tên là ChatSocketInPython Show Tiếp đó sẽ tạo 3 file là server. py để xử lý dữ liệu và điều hướng Client, Client. py và client 2. py Ứng Dụng Chat Nội BộTạo máy chủ bằng socket
Create client connect to serverTại máy khách, chúng tôi sẽ tạo giao diện bằng thư viện tkinter và các hàm sử dụng lý liệu cho dữ liệu, cách kết nối đến máy chủ từ máy khách. Đoạn mã sau sẽ áp dụng cho tệp Client. py và client2. py or more than
Run programFirst run file server. py after that is client. Có rất nhiều cách khác nhau, bài này chỉ là 1 cách đơn giản trong số đó thôi Cho dù bạn là loại kỹ sư phần mềm nào, tại một số thời điểm trong sự nghiệp, bạn sẽ phải tương tác với các máy chủ web. Bạn có thể đang xây dựng API máy chủ cho các dịch vụ phụ trợ. Hoặc có thể bạn chỉ đang cấu hình một máy chủ web cho trang web của bạn Việc làm cao lương trăn cho bạn Trong bài viết này, tôi sẽ đề cập đến cách tạo máy chủ web http cơ bản nhất trong Python Nhưng vì tôi muốn chắc chắn rằng bạn hiểu những gì chúng tôi đang xây dựng, tôi sẽ đưa ra một cái nhìn tổng thể trước tiên về máy chủ web là gì và cách chúng hoạt động Nếu bạn đã biết máy chủ web hoạt động như thế nào, thì bạn có thể bỏ qua ngay phần này Máy chủ HTTP là gì?Máy chủ web HTTP không có gì ngoài một quy trình đang chạy trên máy của bạn và thực hiện chính xác hai điều 1- Listen các yêu cầu http đến trên một địa chỉ cụ thể của ổ cắm TCP (địa chỉ IP và số cổng mà tôi sẽ nói về sau) 2- Xử lý yêu cầu này và gửi phản hồi lại cho người dùng Cụ thể thì hãy xem ví dụ sau Hãy tưởng tượng bạn kéo trình duyệt Chrome của mình lên và nhập www. Yahoo. com vào thanh địa chỉ Tất nhiên, bạn sẽ nhận được trang chủ Yahoo được hiển thị trên cửa sổ trình duyệt của bạn Nhưng những gì thực sự chỉ xảy ra? Trên thực tế có rất nhiều điều đã xảy ra và tôi có thể dành cả một bài viết để giải thích sự kỳ lạ đằng sau sự việc này xảy ra như thế nào At level cao, when you enter www. Yahoo. com trình duyệt của mình, trình duyệt của bạn sẽ tạo một thông báo mạng được gọi là yêu cầu HTTP Yêu cầu này sẽ đi đến tất cả các máy tính Yahoo có máy chủ web đang chạy trên đó. Máy chủ web này sẽ chặn yêu cầu của bạn và xử lý nó bằng cách phản hồi lại bằng html của trang chủ Yahoo Cuối cùng, quá trình duyệt của bạn hiển thị html này trên màn hình và đó là những gì bạn thấy trên màn hình Mọi người tương tác với trang chủ Yahoo sau đó (ví dụ. khi bạn nhấp vào liên kết) sẽ bắt đầu một yêu cầu mới và phản hồi chính xác như yêu cầu ban đầu Để nhắc lại, máy nhận yêu cầu http có một quy trình phần mềm được gọi là máy chủ web chạy trên nó. Máy chủ web này chịu trách nhiệm chặn các yêu cầu này và xử lý chúng theo một cách thích hợp Được rồi, bây giờ bạn đã biết máy chủ web là gì và chức năng của nó chính xác là gì, bạn có thể tự hỏi làm thế nào để yêu cầu đến được máy chủ yahoo đó ngay từ đầu? Câu hỏi hay Trong thực tế đây là một trong những câu hỏi về người yêu thích của tôi mà tôi hỏi các ứng viên tiềm năng trong một cuộc phỏng vấn lập trình viên Hãy để tôi giải thích thế nào, nhưng một lần nữa Địa chỉ ổ cắm TCPBất kỳ tin nhắn http nào (cho dù đó là yêu cầu hay phản hồi) đều cần biết cách đến đích Để đến đích, mỗi thông báo http mang một địa chỉ được gọi là địa chỉ TCP đích Và mỗi địa chỉ TCP bao gồm một địa chỉ IP và số cổng Tôi biết tất cả các từ viết tắt (TCP, IP, v. v. ) có thể đảo ngược nếu khái niệm mạng của bạn không mạnh Tôi sẽ cố gắng làm cho nó đơn giản nhưng nếu bạn quan tâm đến việc nâng cao kiến thức về khái niệm mạng, tôi đánh giá cao cuốn sách này của Ross và Kurose Do đó địa chỉ đó ở đâu khi tất cả những gì bạn đã làm là nhập www. Yahoo. com trình duyệt của bạn? Chà, tên miền này đã được chuyển đổi thành địa chỉ IP thông qua cơ sở dữ liệu phân tán lớn được gọi là DNS Bạn muốn kiểm tra địa chỉ IP này thì còn gì bằng? Easy easy. Truy cập cmd trên windows hoặc terminal trên linux và gõ lệnh sau
Như bạn có thể thấy, DNS sẽ dịch yahoo. com sang bất kỳ địa chỉ nào ở trên Địa chỉ IP riêng sẽ cho phép tin nhắn HTTP đến đúng máy chủ, nhưng bạn vẫn cần số cổng để yêu cầu HTTP đến chính xác máy chủ web Nói cách khác, máy chủ web là một ứng dụng mạng thông tin thường xuyên đang lắng nghe trên một cổng cụ thể And request http is being Send to that port Nhập số cổng ở đâu khi bạn nhập www. Yahoo. com ? Theo mặc định, số cổng là 80 cho http và 443 cho https , làm như vậy, mặc dù bạn chưa xác định rõ cổng số, nó vẫn ở đó Và nếu máy chủ web đang nghe số cổng không mặc định (không phải 80 hay 443), bạn phải chỉ định số cổng rõ ràng như thế này Bây giờ bạn sẽ có tất cả các thông tin cần thiết để tạo một máy chủ web http trong Python Vì vậy, không có thêm rắc rối, hãy bắt đầu Tạo một đơn giản tệp HTMLĐây là những gì chúng tôi muốn làm Chúng tôi muốn tạo một máy chủ http đơn giản phục vụ trang web html tĩnh Hãy tạo trang html của chúng tôi
Hiện tại, hãy tiếp tục và lưu tệp này dưới dạng index. html Với trang web mà chúng tôi muốn phục vụ theo cách khác, bước tiếp theo là tạo một máy chủ web sẽ phục vụ trang html này Tạo HTTP máy chủ webĐể tạo web máy chủ trong Python 3 , bạn cần nhập 2 mô-đun. http. máy chủ và socketserver Lưu ý rằng trong Python 2 , có một mô-đun có tên SimpleHTTPServer. Mô-đun này đã được hợp nhất vào http. máy chủ trong Python 3 Chúng ta hãy xem mã để tạo một máy chủ http
Bây giờ hãy phân tích từng dòng mã này Đầu tiên, như tôi đã đề cập trước đó, máy chủ web là một quá trình lắng nghe các yêu cầu đến địa chỉ TCP cụ thể Và như bạn đã biết bây giờ, một địa chỉ TCP được xác định bởi một địa chỉ IP và số cổng Thứ hai, một máy chủ web cũng cần được biết cách xử lý các yêu cầu đến Những yêu cầu đến được xử lý bởi các xử lý đặc biệt. Bạn có thể nghĩ về một máy chủ web như một người điều hành, một yêu cầu đến, máy chủ http kiểm tra yêu cầu và gửi nó đến một trình xử lý được chỉ định. Tất nhiên những người xử lý này có thể làm bất cứ điều gì bạn muốn Nhưng bạn nghĩ xử lý cơ bản nhất là gì? Vâng, đó sẽ là một trình xử lý phục vụ duy nhất cho một tệp tệp tĩnh Nói cách khác, khi tôi truy cập yahoo. com , máy chủ web ở đầu kia sẽ gửi lại một tệp html tĩnh Đây thực tế là những gì chúng tôi đang cố gắng làm chính xác Và đó, bạn của tôi, là http. người phục vụ. SimpleHTTPRequestHandler là gì. một trình xử lý yêu cầu HTTP đơn giản phục vụ các tệp từ thư mục hiện tại và bất kỳ thư mục con nào của nó. Bây giờ hãy nói về lớp socketserver. Máy chủ TCP Một phiên bản của TCPServer mô tả máy chủ sử dụng giao thức TCP để gửi và nhận tin nhắn (http là lớp giao thức ứng dụng trên TCP đầu tiên) Để khởi động máy chủ TCP, chúng tôi cần hai điều 1- Địa chỉ TCP (địa chỉ IP và số cổng) 2- Người xử lý
Như bạn có thể thấy, địa chỉ TCP được truyền dưới dạng một bộ của (địa chỉ ip, cổng) IP bằng rỗng có nghĩa là máy chủ sẽ lắng nghe trên bất kỳ giao diện mạng nào (tất cả các địa chỉ IP có sẵn) Và vì PORT lưu trữ giá trị 8080 nên máy chủ sẽ lắng nghe các yêu cầu đến trên cổng đó Đối với handler, chúng ta đang vượt qua trình xử lý đơn giản mà chúng ta đã nói trước đó
Vâng, làm thế nào về serve_forever ? Serve_forever là một phương thức trên phiên bản TCPServer khởi động máy chủ và bắt đầu lắng nghe và trả lời các yêu cầu đến Thật tuyệt vời, hãy lưu tệp này dưới dạng máy chủ. py trong cùng thư mục với chỉ mục. html vì theo mặc định, SimpleHTTPRequestHandler sẽ tìm một tệp có tên chỉ mục. html trong thư mục hiện tại Trong thư mục đó, khởi động máy chủ web
Bằng cách đó, giờ đây bạn có một máy chủ HTTP lắng nghe trên bất kỳ giao diện nào tại cổng 8080 đang chờ các yêu cầu http đến Bây giờ là thời gian cho các thú vị thứ Mở trình duyệt của bạn và nhập localhost. 8080 vào thanh địa chỉ Tuyệt vời. Hình như tất cả các hoạt động tốt Nhưng localhost là gì? localhost là tên máy chủ có nghĩa là máy tính này. Nó được sử dụng để truy cập các dịch vụ mạng đang chạy trên máy chủ thông qua mạng loopback Và vì máy chủ web đang nghe trên bất kỳ giao diện nào , nó cũng đang nghe trên loopback giao diện Trong thực tế, bạn hoàn toàn có thể thay thế localhost bằng 127. 0. 0. 1 trong trình duyệt của mình và bạn vẫn sẽ nhận được kết quả tương tự Cuối cùngBạn thực sự có thể bắt đầu một máy chủ web với python mà không cần phải viết bất kỳ tập lệnh nào Chỉ cần vào cmd (windows) hoặc terminal (linux) trên máy tính của bạn và làm như sau (nhưng hãy chắc chắn rằng bạn đang ở trên python 3) |