『壹』 怎麼用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="密碼")
『貳』 Python中用socket編寫伺服器和客戶端。。。
伺服器端代碼
while 1:
buf = s.recv(1024)
改成
while 1:
buf = conn.recv(1024)
看看能不能接收到信息
--------------
貌似你的服務端代碼 倆個while 1 有點問題
『叄』 有關python聊天程序
代碼簡單,直接看代碼吧:
復制代碼代碼如下:
import socket
import threading
import re
#import Tkinter
def ser():
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind(('',33333))
s.listen(1)
conn,addr=s.accept()
while True:
print '[%s:%d] send a message to me: %s'%(addr[0],addr[1],conn.recv(1024))
s.close()
def clt():
c=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
ip_pattern=re.compile(r'^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$')
while True:
ip=raw_input('Input the Server\'s IPv4 address:')
ip_match=ip_pattern.match(ip)
if ip_match:
break
c.connect((ip,33333))
while True:
sms=raw_input('Input the message you want to send:')
c.sendall(sms)
c.close()
if __name__=="__main__":
ser=threading.Thread(target=ser)
clt=threading.Thread(target=clt)
ser.start()
clt.start()
ser.join()
clt.join()
『肆』 python網路編程
那個,conn.recv返回的是接收到的數據,不是數據長度!
file_size = str(conn.recv(1024))這句完全沒有意義
data = conn.recv(1024))
file_size = len(data)
這樣才是獲取數據長度,不過你的邏輯還是有問題,你第一次接收的數據給扔了。。。
『伍』 如何利用Python標准庫編程
第一步、根據自己的業務需求聲明一個繼承自Python標准庫的模塊
# 接收流量類,繼承自asyncore.dispatcher,class Receiver(asyncore.dispatcher):
def __init__(self,conn):
asyncore.dispatcher.__init__(self,conn)
self.from_remote_buffer='' # 接收數據的緩沖區
self.to_remote_buffer='' # 發送數據的緩存區
self.sender=None1234567
第二步、根據文檔,重寫模塊中的方法,這些方法有些像生命周期中的事件,你可以通過在這些事件中自定義代碼,使得在特定時間點執行特定的代碼。
# 接收流量類,繼承自asyncore.dispatcher,class Receiver(asyncore.dispatcher):
def __init__(self,conn):
asyncore.dispatcher.__init__(self,conn)
self.from_remote_buffer='' # 接收數據的緩沖區
self.to_remote_buffer='' # 發送數據的緩存區
self.sender=None
# 當活動opener的套接字真正創建連接時被調用。也許發送一個「歡迎」字元串數據,或者比如,初始化一個遠程端點的協商協議。
def handle_connect(self):
pass
# 當非同步循環檢測到一個在信道套接字上的read()調用時會成功被調用。
def handle_read(self):
read = self.recv(BUFSIZE)
self.from_remote_buffer += read # 每次在非同步循環中被調用來決定是否一個信道的套接字應該被加到寫事件可以發生的列表中。 默認方法簡單地返回 True,顯然,所有的信道會關注於寫事件。
def writable(self):
return (len(self.to_remote_buffer) > 0) # 當非同步循環檢測到一個可寫入的的套接字可以被寫入時被調用。常用這個方法為了性能優化實現必要的緩存。
def handle_write(self):
sent = self.send(self.to_remote_buffer)
self.to_remote_buffer = self.to_remote_buffer[sent:] # 當套接字被關閉的時候調用
def handle_close(self):
self.close() if self.sender:
self.sender.close()