Danh sách gửi ổ cắm python

Socket là giao diện lập trình ứng dụng mạng được sử dụng để truyền và nhận dữ liệu trên internet. Giữa hai chương trình chạy trên mạng cần có một liên kết nối tiếp hai chiều [giao tiếp hai chiều] để kết nối 2 tiến trình trò chuyện với nhau. Điểm cuối [điểm cuối] của liên kết này được gọi là ổ cắm

Một chức năng khác của ổ cắm là giúp các tầng TCP hoặc Lớp TCP xác định danh sách ứng dụng mà dữ liệu sẽ được gửi thông tin qua sự ràng buộc với một cổng cổng [có thể hiện là một con số cụ thể], từ đó tiến hành kết nối

Mô tả mô hình

  1. Trước hết chúng ta sẽ tạo ra một máy chủ bằng cách mở một socket - Socket[]
  2. Sau đó chúng ta sẽ liên kết nó với một máy chủ hoặc một máy và một cổng - Bind[]
  3. Tiếp theo máy chủ sẽ bắt đầu lắng nghe trên cổng đó - Listen[]
  4. Yêu cầu kết nối từ máy khách được gửi tới máy chủ - Connect[]
  5. Máy chủ sẽ chấp nhận yêu cầu từ máy khách và sau đó kết nối được thiết lập - Chấp nhận[]
  6. Bây giờ cả hai đều có thể gửi và nhận tin tại thời điểm đó - Read[] / Write[]
  7. Và cuối cùng khi hoàn tất chúng ta có thể đóng kết nối - Close[]

Bây giờ chúng ta thực hiện lập trình socket bằng module socket trong python

Tạo máy chủ

Chúng ta sẽ tạo một máy chủ DCP IP để phục vụ nhiệm vụ lắng nghe trên một cổng để máy khách gửi yêu cầu đến

Các bước để tạo lên 1 máy chủ phía chương trình

  1. Sử dụng socket với hàm
    #client .py
    
    import socket 
    
    # Như mình đã nói ở trên thì chúng ta không truyền tham số vào vẫn ok
    s = socket.socket[]
    s.connect[["localhost", 4000]] 
    
    # 1024 là số bytes mà client có thể nhận được trong 1 lần
    # Phần tin nhắn đầu tiên
    msg = s.recv[1024]
    
    # Phần tin nhắn tiếp theo 
    while msg:
      print["Recvied ", msg.decode[]]
      msg = s.recv[1024]
    
    s.close[]
    
    0 chúng ta có thể truyền vào tham số hoặc để trống, ở đây mình truyền vào 2 tham số là hằng số
    #client .py
    
    import socket 
    
    # Như mình đã nói ở trên thì chúng ta không truyền tham số vào vẫn ok
    s = socket.socket[]
    s.connect[["localhost", 4000]] 
    
    # 1024 là số bytes mà client có thể nhận được trong 1 lần
    # Phần tin nhắn đầu tiên
    msg = s.recv[1024]
    
    # Phần tin nhắn tiếp theo 
    while msg:
      print["Recvied ", msg.decode[]]
      msg = s.recv[1024]
    
    s.close[]
    
    1 [tham số truyền vào phiên bản IP chúng ta sẽ sử dụng ở đây là phiên bản 4], tiếp theo . [ở đây mình dùng TCP]
  2. Gán địa chỉ cho ổ cắm
    #client .py
    
    import socket 
    
    # Như mình đã nói ở trên thì chúng ta không truyền tham số vào vẫn ok
    s = socket.socket[]
    s.connect[["localhost", 4000]] 
    
    # 1024 là số bytes mà client có thể nhận được trong 1 lần
    # Phần tin nhắn đầu tiên
    msg = s.recv[1024]
    
    # Phần tin nhắn tiếp theo 
    while msg:
      print["Recvied ", msg.decode[]]
      msg = s.recv[1024]
    
    s.close[]
    
    3 với các tham số là máy chủ và cổng
  3. Chỉ định socket lắng nghe kết nối
    #client .py
    
    import socket 
    
    # Như mình đã nói ở trên thì chúng ta không truyền tham số vào vẫn ok
    s = socket.socket[]
    s.connect[["localhost", 4000]] 
    
    # 1024 là số bytes mà client có thể nhận được trong 1 lần
    # Phần tin nhắn đầu tiên
    msg = s.recv[1024]
    
    # Phần tin nhắn tiếp theo 
    while msg:
      print["Recvied ", msg.decode[]]
      msg = s.recv[1024]
    
    s.close[]
    
    4 có thể điền số lượng tối đa các kết nối đang chờ
  4. Chờ/chấp nhận kết nối
    #client .py
    
    import socket 
    
    # Như mình đã nói ở trên thì chúng ta không truyền tham số vào vẫn ok
    s = socket.socket[]
    s.connect[["localhost", 4000]] 
    
    # 1024 là số bytes mà client có thể nhận được trong 1 lần
    # Phần tin nhắn đầu tiên
    msg = s.recv[1024]
    
    # Phần tin nhắn tiếp theo 
    while msg:
      print["Recvied ", msg.decode[]]
      msg = s.recv[1024]
    
    s.close[]
    
    5. Hàm này trả về hai giá tri
    #client .py
    
    import socket 
    
    # Như mình đã nói ở trên thì chúng ta không truyền tham số vào vẫn ok
    s = socket.socket[]
    s.connect[["localhost", 4000]] 
    
    # 1024 là số bytes mà client có thể nhận được trong 1 lần
    # Phần tin nhắn đầu tiên
    msg = s.recv[1024]
    
    # Phần tin nhắn tiếp theo 
    while msg:
      print["Recvied ", msg.decode[]]
      msg = s.recv[1024]
    
    s.close[]
    
    0. connection; . địa chỉ của yêu cầu hoặc địa chỉ của khách hàng
  5. Sau đó máy chủ có thể gửi dữ liệu qua hàm
    #client .py
    
    import socket 
    
    # Như mình đã nói ở trên thì chúng ta không truyền tham số vào vẫn ok
    s = socket.socket[]
    s.connect[["localhost", 4000]] 
    
    # 1024 là số bytes mà client có thể nhận được trong 1 lần
    # Phần tin nhắn đầu tiên
    msg = s.recv[1024]
    
    # Phần tin nhắn tiếp theo 
    while msg:
      print["Recvied ", msg.decode[]]
      msg = s.recv[1024]
    
    s.close[]
    
    2
  6. Sau khi thực hiện xong thì đóng kết nối lại
    #client .py
    
    import socket 
    
    # Như mình đã nói ở trên thì chúng ta không truyền tham số vào vẫn ok
    s = socket.socket[]
    s.connect[["localhost", 4000]] 
    
    # 1024 là số bytes mà client có thể nhận được trong 1 lần
    # Phần tin nhắn đầu tiên
    msg = s.recv[1024]
    
    # Phần tin nhắn tiếp theo 
    while msg:
      print["Recvied ", msg.decode[]]
      msg = s.recv[1024]
    
    s.close[]
    
    3
#server.py 

import socket 

# Định nghĩa host và port mà server sẽ chạy và lắng nghe
host = 'localhost'
port = 4000
s = socket.socket[socket.AF_INET, socket.SOCK_STREAM]
s.bind[[host, port]]

s.listen[1] # 1 ở đây có nghĩa chỉ chấp nhận 1 kết nối
print["Server listening on port", port]

c, addr = s.accept[]
print["Connect from ", str[addr]]

#server sử dụng kết nối gửi dữ liệu tới client dưới dạng binary
c.send[b"Hello, how are you"]
c.send["Bye", encode[]]
c.close[]

Tạo ứng dụng khách

Chúng ta sẽ tạo một máy khách DCP IP để kết nối với máy chủ ở cổng 4000

  1. Create socket with
    #client .py
    
    import socket 
    
    # Như mình đã nói ở trên thì chúng ta không truyền tham số vào vẫn ok
    s = socket.socket[]
    s.connect[["localhost", 4000]] 
    
    # 1024 là số bytes mà client có thể nhận được trong 1 lần
    # Phần tin nhắn đầu tiên
    msg = s.recv[1024]
    
    # Phần tin nhắn tiếp theo 
    while msg:
      print["Recvied ", msg.decode[]]
      msg = s.recv[1024]
    
    s.close[]
    
    4 function
  2. Taọ connect with server with
    #client .py
    
    import socket 
    
    # Như mình đã nói ở trên thì chúng ta không truyền tham số vào vẫn ok
    s = socket.socket[]
    s.connect[["localhost", 4000]] 
    
    # 1024 là số bytes mà client có thể nhận được trong 1 lần
    # Phần tin nhắn đầu tiên
    msg = s.recv[1024]
    
    # Phần tin nhắn tiếp theo 
    while msg:
      print["Recvied ", msg.decode[]]
      msg = s.recv[1024]
    
    s.close[]
    
    5 function
  3. Đọc dữ liệu được máy chủ gửi tới ________ 06
  4. Đóng ổ cắm
    #client .py
    
    import socket 
    
    # Như mình đã nói ở trên thì chúng ta không truyền tham số vào vẫn ok
    s = socket.socket[]
    s.connect[["localhost", 4000]] 
    
    # 1024 là số bytes mà client có thể nhận được trong 1 lần
    # Phần tin nhắn đầu tiên
    msg = s.recv[1024]
    
    # Phần tin nhắn tiếp theo 
    while msg:
      print["Recvied ", msg.decode[]]
      msg = s.recv[1024]
    
    s.close[]
    
    3
#client .py

import socket 

# Như mình đã nói ở trên thì chúng ta không truyền tham số vào vẫn ok
s = socket.socket[]
s.connect[["localhost", 4000]] 

# 1024 là số bytes mà client có thể nhận được trong 1 lần
# Phần tin nhắn đầu tiên
msg = s.recv[1024]

# Phần tin nhắn tiếp theo 
while msg:
  print["Recvied ", msg.decode[]]
  msg = s.recv[1024]

s.close[]

Sau khi chỉ chạy máy chủ. py rồi chạy client. py thì ta thấy client đã nhận dữ liệu do server gửi tới

Gửi tập tin

Chỉnh sửa nội dung sử dụng 2 tệp trong một thời gian ngắn thì chúng tôi có thể thực hiện chức năng máy chủ gửi tệp nội dung mà khách hàng yêu cầu tới

Bài Viết Liên Quan

Chủ Đề