1. 程式人生 > 程式設計 >python中的TCP(傳輸控制協議)用法例項分析

python中的TCP(傳輸控制協議)用法例項分析

本文例項講述了python中的TCP(傳輸控制協議)用法。分享給大家供大家參考,具體如下:

1.TCP與UDP的不同:

windows網路除錯助手下載:https://pan.baidu.com/s/1IwBWeAzGUO1A3sCWl20ssQ
提取碼:68gr

或者點選此處本站下載

  • 面向連線(確認有建立三方交握,連線以建立的傳輸)
  • 有序資料傳輸
  • 重發丟失的資料包
  • 捨棄重複的資料包
  • 無差錯的資料傳輸
  • 阻塞/流量控制

2.客戶端:

import socket
def main():
  # 建立套接字
  tcp_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
  # 連線伺服器
  #tcp_socket.connect(("172.17.3.97",8080))
  server_ip = input("請輸入要連結的伺服器ip:")
  server_port = int(input("請輸入要連結的伺服器port:"))
  server_addr = (server_ip,server_port)
  tcp_socket.connect(server_addr)
  # 傳送資料/接收資料
  send_data = input("請輸入要傳送的資料:")
  tcp_socket.send(send_data.encode("gbk"))
  #關閉套接字
  tcp_socket.close()
if __name__ == "__main__":
  main()

3.服務端:可以開啟多個網路除錯助手(客戶端)測試

迴圈為多個客戶端服務,並且迴圈為同一個客戶端服務

import socket
def main():
  # 建立套接字
  tcp_server_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 繫結本地資訊
tcp_server_socket.bind("",7890)
# 讓預設套接字由主動變為被動listen
tcp_server_socket.listen(128)
while True:
  print("等待一個新的客戶端......")
  # 等待客戶端的連線 accept
  new_client_socket,client_addr = tcp_server_socket.accept()
  print("一個新的客戶端已到來%s" %str(client_addr))
  while True:
    # 接受客戶端發過來的請求
    recv_data = new_client_socket.recv(1024)
    print("客戶端發來的請求是%s" %recv_data.decode("gbk"))
    # 如果recv解堵塞,那麼有兩種方式:
    # 1.客戶端發來資料
    # 2.客戶端呼叫close
    if recv_data:
      # 回送一部分資料給客戶端
      new_client_socket.send("hahaha".encode("gbk"))
    else:
      break
  # 關閉套接字
  new_client_socket.close()
  print("服務完畢,謝謝光臨!")
# 如果將監聽套接字關閉,會導致不能再次等待新的客戶端到來
tcp_server_socket.close()
if __name__ == "__main__":
  main()

更多關於Python相關內容可檢視本站專題:《Python Socket程式設計技巧總結》、《Python資料結構與演算法教程》、《Python函式使用技巧總結》、《Python字串操作技巧彙總》、《Python入門與進階經典教程》及《Python檔案與目錄操作技巧彙總》

希望本文所述對大家Python程式設計有所幫助。