python中的TCP(傳輸控制協議)用法例項分析
阿新 • • 發佈:2020-01-09
本文例項講述了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程式設計有所幫助。