c盤清理的步驟是什么(如何清理C盤空間)
如何清理C盤空間怎么清理C盤的垃圾文件?每天上網(wǎng)會(huì)給電腦帶來(lái)很多臨時(shí)文件,這些垃圾文件不清理掉時(shí)間久了就會(huì)影響到電腦的運(yùn)行速度。那怎
2022/12/08
(資料圖)
導(dǎo)入 socket 模塊import socket
創(chuàng)建服務(wù)端 socket 對(duì)象socket.socket(AddressFamily, Type)
參數(shù)說(shuō)明:
AddressFamily 表示IP地址類型, 分為TPv4和IPv6Type 表示傳輸協(xié)議類型方法說(shuō)明:
bind((host, port)) 表示綁定端口號(hào), host 是 ip 地址,port 是端口號(hào),ip 地址一般不指定,表示本機(jī)的任何一個(gè)ip地址都可以。listen (backlog) 表示設(shè)置監(jiān)聽,backlog參數(shù)表示最大等待建立連接的個(gè)數(shù)。accept() 表示等待接受客戶端的連接請(qǐng)求send(data) 表示發(fā)送數(shù)據(jù),data 是二進(jìn)制數(shù)據(jù)recv(buffersize) 表示接收數(shù)據(jù), buffersize 是每次接收數(shù)據(jù)的長(zhǎng)度import socketif __name__ == "__main__": # 創(chuàng)建tcp服務(wù)端套接字 tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 設(shè)置端口號(hào)復(fù)用,讓程序退出端口號(hào)立即釋放 tcp_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True) # 給程序綁定端口號(hào) tcp_server_socket.bind(("", 8989)) # 設(shè)置監(jiān)聽 # 128:最大等待建立連接的個(gè)數(shù), 提示: 目前是單任務(wù)的服務(wù)端,同一時(shí)刻只能服務(wù)與一個(gè)客戶端,后續(xù)使用多任務(wù)能夠讓服務(wù)端同時(shí)服務(wù)與多個(gè)客戶端, # 不需要讓客戶端進(jìn)行等待建立連接 # listen后的這個(gè)套接字只負(fù)責(zé)接收客戶端連接請(qǐng)求,不能收發(fā)消息,收發(fā)消息使用返回的這個(gè)新套接字來(lái)完成 tcp_server_socket.listen(128) # 等待客戶端建立連接的請(qǐng)求, 只有客戶端和服務(wù)端建立連接成功代碼才會(huì)解阻塞,代碼才能繼續(xù)往下執(zhí)行 # 1. 專門和客戶端通信的套接字: service_client_socket # 2. 客戶端的ip地址和端口號(hào): ip_port service_client_socket, ip_port = tcp_server_socket.accept() # 代碼執(zhí)行到此說(shuō)明連接建立成功 print("客戶端的ip地址和端口號(hào):", ip_port) # 接收客戶端發(fā)送的數(shù)據(jù), 這次接收數(shù)據(jù)的最大字節(jié)數(shù)是1024 recv_data = service_client_socket.recv(1024) # 獲取數(shù)據(jù)的長(zhǎng)度 recv_data_length = len(recv_data) print("接收數(shù)據(jù)的長(zhǎng)度為:", recv_data_length) # 對(duì)二進(jìn)制數(shù)據(jù)進(jìn)行解碼 recv_content = recv_data.decode("gbk") print("接收客戶端的數(shù)據(jù)為:", recv_content) # 準(zhǔn)備發(fā)送的數(shù)據(jù) send_data = "ok, 問(wèn)題正在處理中...".encode("gbk") # 發(fā)送數(shù)據(jù)給客戶端 service_client_socket.send(send_data) # 關(guān)閉服務(wù)與客戶端的套接字, 終止和客戶端通信的服務(wù) service_client_socket.close() # 關(guān)閉服務(wù)端的套接字, 終止和客戶端提供建立連接請(qǐng)求的服務(wù) tcp_server_socket.close() 執(zhí)行結(jié)果:客戶端的ip地址和端口號(hào): ("172.16.47.209", 52472)接收數(shù)據(jù)的長(zhǎng)度為: 5接收客戶端的數(shù)據(jù)為: hello
說(shuō)明:
當(dāng)客戶端和服務(wù)端建立連接后,服務(wù)端程序退出后端口號(hào)不會(huì)立即釋放,需要等待大概1-2分鐘。
解決辦法有兩種:
更換服務(wù)端端口號(hào)設(shè)置端口號(hào)復(fù)用(推薦大家使用),也就是說(shuō)讓服務(wù)端程序退出后端口號(hào)立即釋放。設(shè)置端口號(hào)復(fù)用的代碼如下:
# 參數(shù)1: 表示當(dāng)前套接字# 參數(shù)2: 設(shè)置端口號(hào)復(fù)用選項(xiàng)# 參數(shù)3: 設(shè)置端口號(hào)復(fù)用選項(xiàng)對(duì)應(yīng)的值tcp_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
網(wǎng)絡(luò)調(diào)試助手充當(dāng)客戶端程序:
標(biāo)簽: 程序開發(fā) 發(fā)送數(shù)據(jù) 二進(jìn)制數(shù)