Làm cách nào để nhập ổ cắm trong python?

Không thể phủ nhận Internet đã trở thành 'Linh hồn của sự tồn tại' và hoạt động của nó được đặc trưng bởi 'Kết nối' hoặc 'Mạng'. Các mạng này được thực hiện bằng cách sử dụng một trong những nguyên tắc cơ bản quan trọng nhất của Ổ cắm. Bài viết này đề cập đến tất cả các lĩnh vực liên quan đến Lập trình Socket trong Python. Ổ cắm giúp bạn thực hiện các kết nối này, trong khi Python chắc chắn giúp bạn dễ dàng

Hãy xem nhanh tất cả các chủ đề được đề cập trong bài viết này








Tại sao nên sử dụng Ổ cắm?

Ổ cắm là xương sống của mạng. Chúng giúp truyền thông tin giữa hai chương trình hoặc thiết bị khác nhau. Ví dụ: khi bạn mở trình duyệt của mình, bạn với tư cách là khách hàng đang tạo kết nối đến máy chủ để truyền thông tin

Trước khi tìm hiểu sâu hơn về giao tiếp này, trước tiên hãy tìm hiểu chính xác những ổ cắm này là gì

Ổ cắm là gì?

Nói chung, ổ cắm là điểm cuối bên trong được xây dựng để gửi và nhận dữ liệu. Một mạng duy nhất sẽ có hai ổ cắm, một ổ cắm cho mỗi thiết bị hoặc chương trình giao tiếp. Các ổ cắm này là sự kết hợp của địa chỉ IP và Cổng. Một thiết bị có thể có số 'n' ổ cắm dựa trên số cổng đang được sử dụng. Các cổng khác nhau có sẵn cho các loại giao thức khác nhau. Hãy xem hình ảnh sau đây để biết thêm về một số số cổng phổ biến và các giao thức liên quan


Bây giờ bạn đã rõ về khái niệm socket, bây giờ chúng ta hãy xem mô-đun Socket của Python

Cách đạt được Lập trình ổ cắm trong Python

Để đạt được Lập trình ổ cắm bằng Python, bạn sẽ cần nhập mô-đun ổ cắm hoặc khung. Mô-đun này bao gồm các phương thức tích hợp cần thiết để tạo ổ cắm và giúp chúng liên kết với nhau

Một số phương pháp quan trọng như sau

Phương thứcMô tả

ổ cắm. ổ cắm[]

được sử dụng để tạo ổ cắm [bắt buộc trên cả máy chủ cũng như máy khách để tạo ổ cắm]

ổ cắm. Chấp nhận[]

được sử dụng để chấp nhận một kết nối. Nó trả về một cặp giá trị [conn, address] trong đó conn là một đối tượng ổ cắm mới để gửi hoặc nhận dữ liệu và địa chỉ là địa chỉ của ổ cắm có ở đầu kia của kết nối

ổ cắm. trói buộc[]

được sử dụng để liên kết với địa chỉ được chỉ định làm tham số

ổ cắm. Thoát[]

được sử dụng để đánh dấu ổ cắm là đã đóng

ổ cắm. liên kết[]

được sử dụng để kết nối với một địa chỉ từ xa được chỉ định làm tham số

ổ cắm. nghe[]

cho phép máy chủ chấp nhận kết nối

Bây giờ bạn đã hiểu tầm quan trọng của mô-đun socket, hãy tiếp tục xem nó có thể phục vụ như thế nào để tạo máy chủ và máy khách cho Lập trình socket trong Python

Máy chủ là gì?

Máy chủ là một chương trình, máy tính hoặc thiết bị được dùng để quản lý tài nguyên mạng. Máy chủ có thể nằm trên cùng một thiết bị hoặc máy tính hoặc được kết nối cục bộ với các thiết bị và máy tính khác hoặc thậm chí từ xa. Có nhiều loại máy chủ như máy chủ cơ sở dữ liệu, máy chủ mạng, máy chủ in, v.v.

Máy chủ thường sử dụng các phương thức như ổ cắm. ổ cắm[], ổ cắm. liên kết[], ổ cắm. listen[], v.v. để thiết lập kết nối và liên kết với máy khách. Bây giờ hãy viết chương trình để tạo một máy chủ. Xem xét ví dụ sau

THÍ DỤ

import socket
s=socket.socket[socket.AF_INET, socket.SOCK_STREAM]
s.bind[[socket.gethostname[],1234]]          
#port number can be anything between 0-65535[we usually specify non-previleged ports which are > 1023]
s.listen[5]

while True:
    clt,adr=s.accept[]
    print[f"Connection to {adr}established"]  
   #f string is literal string prefixed with f which 
   #contains python expressions inside braces
    clt.send[bytes["Socket Programming in Python","utf-8 "]] #to send info to clientsocket

Như bạn có thể thấy, điều cần thiết đầu tiên để tạo một ổ cắm là nhập mô-đun ổ cắm. Sau đó, ổ cắm. Phương thức socket[] được sử dụng để tạo socket phía máy chủ

GHI CHÚ

AF_INET đề cập đến Địa chỉ từ Internet và nó yêu cầu một cặp [máy chủ, cổng] trong đó máy chủ có thể là URL của một số trang web cụ thể hoặc địa chỉ của nó và số cổng là một số nguyên. SOCK_STREAM được sử dụng để tạo Giao thức TCP

Phương thức bind[] chấp nhận hai tham số dưới dạng một bộ [máy chủ, cổng]. Tuy nhiên, tốt hơn hết bạn nên sử dụng số cổng có 4 chữ số vì số cổng thấp hơn thường được sử dụng. Phương thức listen[] cho phép máy chủ chấp nhận các kết nối. Ở đây, 5 là hàng đợi cho nhiều kết nối xuất hiện đồng thời. Giá trị tối thiểu có thể được chỉ định ở đây là 0 [Nếu bạn cung cấp giá trị nhỏ hơn, giá trị đó sẽ thay đổi thành 0]. Trong trường hợp không có tham số nào được chỉ định, nó sẽ lấy một tham số phù hợp mặc định

Cho phép chấp nhận kết nối mãi mãi. 'clt' và 'adr' là đối tượng và địa chỉ máy khách. Câu lệnh in chỉ in ra địa chỉ và số cổng của ổ cắm máy khách. Cuối cùng, clt. gửi được sử dụng để gửi dữ liệu theo byte

Bây giờ máy chủ của chúng tôi đã được thiết lập xong, hãy chuyển sang máy khách

Khách hàng là gì?

Máy khách là máy tính hoặc phần mềm nhận thông tin hoặc dịch vụ từ máy chủ. Trong mô-đun máy khách-máy chủ, máy khách yêu cầu dịch vụ từ máy chủ. Ví dụ tốt nhất là trình duyệt web như Google Chrome, Firefox, v.v. Các trình duyệt web này yêu cầu máy chủ web cung cấp các trang web và dịch vụ cần thiết theo chỉ dẫn của người dùng. Các ví dụ khác bao gồm trò chơi trực tuyến, trò chuyện trực tuyến, v.v.

Bây giờ chúng ta hãy xem cách viết mã chương trình phía máy khách bằng ngôn ngữ lập trình Python

THÍ DỤ

import socket
s=socket.socket[socket.AF_INET, socket.SOCK_STREAM]
s.connect[[socket.gethostname[], 2346]]
msg=s.recv[1024]
print[msg.decode["utf-8"]]

Bước đầu tiên là nhập mô-đun ổ cắm và sau đó tạo một ổ cắm giống như bạn đã làm khi tạo máy chủ. Sau đó, để tạo kết nối giữa máy khách-máy chủ, bạn sẽ cần sử dụng phương thức connect[] bằng cách chỉ định [máy chủ, cổng]


GHI CHÚ. gethostname được sử dụng khi máy khách và máy chủ trên cùng một máy tính. [LAN – ip cục bộ / WAN – ip công cộng]

Ở đây, máy khách muốn nhận một số thông tin từ máy chủ và để làm điều này, bạn cần sử dụng phương thức recv[] và thông tin được lưu trữ trong một biến khác msg. Chỉ cần lưu ý rằng thông tin được truyền sẽ ở dạng byte và trong ứng dụng khách trong chương trình trên có thể nhận tới 1024 byte [kích thước bộ đệm] trong một lần truyền. Nó có thể được chỉ định cho bất kỳ số tiền nào tùy thuộc vào lượng thông tin được truyền

Cuối cùng, tin nhắn được chuyển sẽ được giải mã và in

Bây giờ bạn đã biết cách tạo các chương trình máy khách-máy chủ, hãy tiếp tục xem chúng cần được thực thi như thế nào

Máy khách-máy chủ Echo

Để thực thi các chương trình này, hãy mở dấu nhắc lệnh của bạn, vào thư mục nơi bạn đã tạo chương trình máy khách và máy chủ của mình, sau đó nhập

máy chủ py. py    [ở đây, máy chủ. py là tên tệp của máy chủ, bạn cũng có thể sử dụng py -3. 7 máy chủ. py]

Khi điều này được thực hiện, máy chủ bắt đầu chạy. Để thực thi ứng dụng khách, hãy mở một cửa sổ cmd khác và nhập

khách hàng py. py    [ở đây, khách hàng. py là tên tệp của ứng dụng khách]

ĐẦU RA [ MÁY CHỦ ].  

[KHÁCH HÀNG]

Hãy thử chương trình tương tự bằng cách giảm kích thước bộ đệm xuống 7 và xem kết quả chúng tôi nhận được

ĐẦU RA.  

Như bạn có thể thấy, kết nối bị ngắt sau khi truyền 7 byte. Nhưng đây là một vấn đề vì bạn chưa nhận được thông tin đầy đủ và kết nối đã bị đóng. Hãy tiếp tục giải quyết vấn đề này

nhiều thông tin liên lạc

Để kết nối tiếp tục cho đến khi máy khách nhận được thông tin đầy đủ, bạn có thể sử dụng vòng lặp while

THÍ DỤ

import socket
s=socket.socket[socket.AF_INET, socket.SOCK_STREAM]
s.connect[[socket.gethostname[], 2346]]
while True:
msg=s.recv[7]
print[msg.decode["utf-8"]]

Sau khi bạn thực hiện việc này, toàn bộ thông báo sẽ được nhận trong 7 byte cho mỗi lần truyền

Nhưng lần này, như bạn có thể thấy, kết nối không bị ngắt và bạn không bao giờ biết khi nào nó sẽ xảy ra. Và để thêm vào điều này, điều gì sẽ xảy ra nếu bạn thực sự không biết mức độ lớn của thông báo hoặc thông tin mà khách hàng sẽ nhận được từ máy chủ. Trong những trường hợp như vậy, bạn thực sự có thể sử dụng đoạn mã sau ở phía máy khách

THÍ DỤ

complete_info=''
while True:
    msg = s.recv[7]  
    if len[msg]>sys. stderr, 'khởi động trên %s cổng %s' % server_address sock.  .  
# Nghe các kết nối đến sock

Chủ Đề