python基礎知識學習筆記(網路程式設計)

2021-09-12 11:09:08 字數 2918 閱讀 7006

網路程式設計一般使用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...