日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python网络编程—TCP协议(二)

發布時間:2025/3/21 python 13 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python网络编程—TCP协议(二) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、TCP協議的原理圖


每個客戶端與服務端通訊是互不干擾的

二、注意點

1、tcp服務器─般情況下都需要綁定,否則客戶端找不到這個服務器
2、tcp客戶端一般不綁定,因為是主動鏈接服務器,所以只要確定好服務器的ip、port等信息就好
3、tcp服務器中通過listen可以將socket創建出來的主動套接字變為被動的,這是做tcp服務器時必須要做的
4、當一個tcp客戶端連接服務器時,服務器端會有1個新的套接字,這個套接字用來標記這個客戶端,單獨為這個客戶端服務
5、listen后的套接字是被動套接字,用來接收新的客戶端的鏈接請求的,而accept返回的新套接字是標記這個新客戶端的
6、關閉]listen后的套接字意味著被動套接字關閉了,會導致新的客戶端不能夠鏈接服務器,但是之前已經鏈接成功的客戶端正常通信。
7、關閉accept返回的套接字意味著這個客戶端已經服務完畢
8、當客戶端的套接字調用close后,服務器端會recv解堵塞,并且返回的長度為0,因此服務器可以通過返回數據的長度來區別客戶端是否已經下線

對第8點進行解釋:
服務器端

from socket import *# todo 1、創建server-socket TCP協議 server_socket = socket(AF_INET, SOCK_STREAM)# todo 2、創建目標服務器,綁定一個IP和端口 服務器里面空的字符串代表server_socket綁定這臺機器下的任何ip地址 host_port = ('', 8088) server_socket.bind(host_port)# todo 3、監聽服務器的socket,listen讓socket處于被動。這時就可以接收客戶端的連接請求了 server_socket.listen(5) # 一般為5,表示客戶端線程掛起的個數# todo 4、等待客戶端的連接請求,當前函數是線程阻塞的函數,accept返回2個值,第一個:新的socket,第二個:客戶端地址 new_socket, client_addr = server_socket.accept() # todo 新創建的socket是server_socket中的子socket,只是和當前的客戶端(一個客戶端)收發數據# todo 5、服務器接收客戶端發送過來的數據,recv一般用于TCP協議的接收數據,recvfrom用于UDP data = new_socket.recv(1024) # data是字節數據print('服務器接收的數據是:', data.decode('utf-8'))# todo 6、服務器端發送數據給客戶端,在TCP中發送數據用send,UDP用sendto new_socket.send('THANK you'.encode('utf-8'))# 關閉套接字 new_socket.close() # todo new_socket關閉意味著當前客戶端的服務已經完成 server_socket.close() # todo server_socket關閉意味著整個服務器全部關閉

客戶端

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的python网络编程—TCP协议(二)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。