網路程式設計一般使用socket套接字
使用tcp建立長連線:
client:(客戶端**)
import socket
sk = socket.socket()
sk.connect(('127.0.0.1',9000))
while true:
msg = sk.recv(1024)
print(msg.decode('utf-8'))
if msg == b'q':break
inp = input('>>>')
if inp == 'q':
sk.send(inp.encode('utf-8'))
break
sk.send(inp.encode('utf-8'))
sk.close()
server : (服務端**)
import socket
sk = socket.socket()
sk.setsockopt(socket.sol_socket,socket.so_reuseaddr,1)
sk.bind(('192.168.21.36',9000))
sk.listen()
while true:
conn,addr = sk.accept() # 接收連線 三次握手conn
while true:
inp = input('>>>')
if inp == 'q':
conn.send(inp.encode('utf-8'))
break
conn.send(inp.encode('utf-8'))
msg = conn.recv(1024)
if msg == b'q':break
print(msg.decode('utf-8'))
conn.close() # 四次揮手
sk.close()
client:
import socket
sk = socket.socket(type=socket.sock_dgram)
addr = ('127.0.0.1',9090)
while true:
msg = input('>>>')
sk.sendto(msg.encode('utf-8'),addr)
msg_recv,addr = sk.recvfrom(1024)
print(msg_recv.decode('utf-8'))
sk.close()
server:
import socket
sk = socket.socket(type=socket.sock_dgram)
sk.bind(('127.0.0.1',9090))
while true:
msg,addr = sk.recvfrom(1024)
print('來自[%s:%s]的訊息--%s'%(addr[0],addr[1],msg.decode('utf-8')))
inp = input('>>>')
sk.sendto(inp.encode('utf-8'),addr)
sk.close()
# server 下發命令
# client 執行命令
# ssh協議
# import os
# ret = os.popen('ls').read()
# print(ret)
import subprocess
# 內建模組 和os模組的功能有相似之處
# 能執行作業系統的命令的功能
ret = subprocess.popen('dir', # 要執行的命令
shell=true, # 表示要執行的是一條系統命令
stdout=subprocess.pipe, # 儲存執行結果的正常資訊
stderr=subprocess.pipe) # 儲存執行結果的錯誤資訊
print('stdout : ',ret.stdout.read().decode('gbk'))
print('stderr : ',ret.stderr.read().decode('gbk'))
client:
import socket
import subprocess
sk = socket.socket()
sk.connect(('127.0.0.1',8090))
while true:
cmd = sk.recv(1024).decode('utf-8')
if cmd == 'q': break
res = subprocess.popen(cmd,shell=true,
stdout=subprocess.pipe,
stderr=subprocess.pipe)
sk.send(res.stdout.read())
sk.send(res.stderr.read())
sk.close()
server:
import socket
sk = socket.socket()
sk.bind(('127.0.0.1',8090))
sk.listen()
conn,addr = sk.accept()
while true:
cmd = input('cmd : ')
if cmd == 'q':
conn.send(cmd.encode('utf-8'))
break
conn.send(cmd.encode('utf-8'))
print('stdout : ',conn.recv(1024).decode('gbk'))
conn.close()
sk.close()
Python學習筆記 基礎知識
coding cp936 此行是為了和linux的平台保持相容,是用來告訴shell執行時,去用 bin python來解釋執行 bin python 此行指明了編碼方式,預設是utf 8,如果我們要輸出中文或者採用中文的注釋,就會出現錯誤 coding gb2312 python特色一 三引號注釋...
Python基礎知識學習筆記
前置知識 一切皆物件,有自己的屬性和方法 變數 變數 variable 先賦值後使用 字串 轉義字元 i m lzh 格式化字串 print f my name is name 0 3 lzh 包括前面不包括後面 函式 def triangel width int input 請輸入長 height...
Python學習筆記 基礎知識
python中單行注釋以 開頭,多行注釋可以用多個 號,或者三個單引號或雙引號。我是注釋 我也是注釋 我也是注釋 我也是注釋 python使用縮排空格數來識別 塊而不是大括號,同乙個 塊的語句必須包含相同的縮排空格數。if true print hello world else print hell...