導航:首頁 > 編程語言 > pythonrecv參數

pythonrecv參數

發布時間:2024-06-01 21:43:03

python socketserver和socket的區別

區別:

1.首先介紹下socket

socket的英文原義是「孔」或「插座」。作為BSD UNIX的進程通信機制,取後一種意思。通常也
稱作"套接字",用於描述IP地址和埠,是一個通信鏈的句柄,可以用來實現不同虛擬機或不同計算機之間的通信。在Internet上的主機一 般運行了多個服務軟體,同時提供幾種服務。每種服務都打開一個Socket,並綁定到一個埠上,不同的埠對應於不同的服務。Socket正如其英文原 意那樣,像一個多孔插座。一台主機猶如布滿各種插座的房間,每個插座有一個編號,有的插座提供220伏交流電, 有的提供110伏交流電,有的則提供有線電視節目。 客戶軟體將插頭插到不同編號的插座,就可以得到不同的服務

內部調用流程為:

啟動服務端程序

執行 TCPServer.init方法,創建服務端Socket對象並綁定 IP 和 埠

執行 BaseServer.init方法,將自定義的繼承自SocketServer.BaseRequestHandler 的類 - MyRequestHandle賦值給 self.RequestHandlerClass

執行 BaseServer.server_forever 方法,While 循環一直監聽是否有客戶端請求到達 ...
當客戶端連接到達伺服器

執行 ThreadingMixIn.process_request 方法,創建一個 「線程」 用來處理請求

執行 ThreadingMixIn.process_request_thread 方法

執行 BaseServer.finish_request 方法,執行 self.RequestHandlerClass() 即:執行 自定義 MyRequestHandler 的構造方法(自動調用基類BaseRequestHandler的構造方法,在該構造方法中又會調用 MyRequestHandler的handle方法)

ForkingTCPServer

ForkingTCPServer和ThreadingTCPServer的使用和執行流程基本一致,只不過在內部分別為請求者建立 「線程」 和 「進程」。

❷ python socket recv 數據是什麼類型

Python中socket函數recv的問題!
在騰訊雲上創建您的SQL Cluster>>> »
我在寫python教程的博客,但是今天在寫socket編程的相關知識的時候,准備用下面的程序做演示代碼,本以為不會有問題,但是問題就莫名其妙的出現了!
d = s.recv(1024)
這段代碼的返回值通過使用 not d 判斷總是失敗,於是那個循環讀取的 while 就陷入了死循環,請各位幫忙看一下,謝謝!

#-*- coding:utf8 -*-

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("www.oschina.net", 80))
s.send("GET / HTTP/1.1\r\nHost:www.oschina.net\r\n\r\n")

tmp = []
while True:
d = s.recv(1024)
if not d:
break
tmp.append(d)

data = ''.join(tmp)
s.close()

header, html = data.split("\r\n\r\n", 1)
print header
with open("oschina.html", "wb") as f:
f.write(html)

❸ 怎麼用python登錄windows系統

# -*- coding:utf-8 -*-
#! python2
import wmi
def sys_version(ipaddress, user, password):
conn = wmi.WMI(computer=ipaddress, user=user, password=password)
for sys in conn.Win32_OperatingSystem():
print "Version:%s" % sys.Caption.encode("UTF8"),"Vernum:%s" % sys.BuildNumber #系統信息
print sys.OSArchitecture.encode("UTF8") # 系統的位數
print sys.NumberOfProcesses # 系統的進程數
if __name__ == '__main__':
sys_version(ipaddress="ip", user="用戶名", password="密碼")

❹ recv函數返回什麼值

recv函數返回其實際的位元組數,如果recv在時出錯,那麼它返回SOCKET_ERROR。如果recv函數在等待協議接收數據時網路中斷了,那麼它返回0。

擴展閱讀,linux recv函數詳解:

1 #include <sys/socket.h>
2 ssize_t recv(int sockfd, void *buff, size_t nbytes, int flags);
recv 的前3個參數等同於read函數。

flags參數值為0或:

flags
說明
recv
send

MSG_DONTWAIT
僅本操作非阻塞

MSG_OOB 發送或接收帶外數據

MSG_PEEK
窺看外來消息

MSG_WAITALL
等待所有數據

recv函數解析:

sockfd: 接收端套接字描述符

buff: 用來存放recv函數接收到的數據的緩沖區

nbytes: 指明buff的長度

flags: 一般置為0

1) recv先等待s的發送緩沖區的數據被協議傳送完畢,如果協議在傳送sock的發送緩沖區中的數據時出現網路錯誤,那麼recv函數返回SOCKET_ERROR

2)
如果套接字sockfd的發送緩沖區中沒有數據或者數據被協議成功發送完畢後,recv先檢查套接字sockfd的接收緩沖區,如果sockfd的接收緩
沖區中沒有數據或者協議正在接收數據,那麼recv就一起等待,直到把數據接收完畢。當協議把數據接收完畢,recv函數就把s的接收緩沖區中的數據
到buff中(注意協議接收到的數據可能大於buff的長度,所以在這種情況下要調用幾次recv函數才能把sockfd的接收緩沖區中的數據
完。recv函數僅僅是數據,真正的接收數據是協議來完成的)

3) recv函數返回其實際的位元組數,如果recv在時出錯,那麼它返回SOCKET_ERROR。如果recv函數在等待協議接收數據時網路中斷了,那麼它返回0。

4) 在unix系統下,如果recv函數在等待協議接收數據時網路斷開了,那麼調用 recv的進程會接收到一個SIGPIPE信號,進程對該信號的默認處理是進程終止。

❺ Python data,addr=recv(2048)什麼意思

data, addr = s.recv(2048)
s.recv()即socket.recv(),的返回值是一個元組(data,address)
從發送方接收數據,接收到的數據data為字元串類型,保存在data中,從對方發送過來的地址保存在addr中。2048表示一次最多接收2048個位元組。

閱讀全文

與pythonrecv參數相關的資料

熱點內容
給plc程序加密 瀏覽:225
python多進程數據共享 瀏覽:847
華為和安卓系統有什麼不一樣 瀏覽:106
python中wb表怎麼列印 瀏覽:297
python如何把字元串賦給數組 瀏覽:229
狄克斯特拉演算法是什麼 瀏覽:675
室內裝飾材料pdf 瀏覽:633
gitbook命令行 瀏覽:1000
啟動zookeeper命令 瀏覽:527
健身館app怎麼樣 瀏覽:314
python可視化項目 瀏覽:442
安卓機怎麼辨別蘋果機真假 瀏覽:711
微信小程序源碼轉成抖音 瀏覽:654
優省油app怎麼沒法下載 瀏覽:72
pdf格式轉換excel 瀏覽:625
高爾夫6壓縮機響 瀏覽:310
優盤文件夾自動恢復 瀏覽:76
有伺服器怎麼製作小程序 瀏覽:132
程序員怎麼避開外包公司 瀏覽:604
刺激戰場國際服體驗伺服器滿了怎麼辦 瀏覽:487