参考:Flask 获取客户端GET请求_TCatTime的博客-CSDN博客_flask get请求
Python(六十三)页面分析、HTTP原理和响应 - 简书
python3 flask接收数据处理_18923489164的博客-CSDN博客
FTP:(pyftpdlib)有原文参考链接
1.设置站点
https://jingyan.baidu.com/article/4dc40848b041cc89d846f113.html
2.Python实现FTP服务器和客户端_墨痕诉清风的博客-CSDN博客_ftp python
开启服务
from pyftpdlib.authorizers import DummyAuthorizer
from pyftpdlib.handlers import FTPHandler
from pyftpdlib.servers import FTPServer
# 新建一个用户组
authorizer = DummyAuthorizer()
# 将用户名,密码,指定目录,权限 添加到里面
authorizer.add_user("fan", "root", "E:/", perm="elr") # adfmw
# 这个是添加匿名用户,任何人都可以访问,如果去掉的话,需要输入用户名和密码,可以自己尝试
authorizer.add_anonymous("E:/")
handler = FTPHandler
handler.authorizer = authorizer
# 开启服务器
server = FTPServer(("127.0.0.1", 21), handler)
server.serve_forever()
3.客户端
主要接收(暂时我还没有用客户端接收)
import ftplib
import sys
#获取服务器的ip地址(如192.168.1.107),使用sys.argv可以从命令行参数里面获取
if len(sys.argv) < 2:
tmp = input("please input server address:")
sys.argv.append(tmp)
server_address = sys.argv[1]
#创建FTP实例,并显示欢迎界面
ftp = ftplib.FTP(server_address)
print(ftp.getwelcome())
#登录,输入服务器里添加过的用户名和口令
ftp.login('user', 'pass')
#文件上传
def upload(fname):
fd = open(fname, 'rb')
new_name = input("input new name:")
#以二进制的形式上传
ftp.storbinary("STOR %s" % new_name, fd)
fd.close()
print("upload finished")
#文件下载
def download(fname):
#构建文件的存储路径,这里用的是D盘,可以自行设置
new_path = "D:\\FTPdownload\\" + fname
fd = open(new_path, 'wb')
#以二进制形式下载,注意第二个参数是fd.write,上传时是fd
ftp.retrbinary("RETR %s" % fname, fd.write)
fd.close()
print("download finished")
def main():
#选择操作,上传、下载、退出
op = input("what do you want?(u/d/q)")
if op == "u":
#输入文件完整路径,必要时可以用绝对路径
fname = input("input the file of path:")
upload(fname)
elif op == "d":
fname = input("input the file name:")
download(fname)
else:
print("quit now!")
ftp.quit()
if __name__ == '__main__':
main()
https://www.jb51.net/article/65276.htm
TCP主要是socket创建链接,设置ip和端口号
TCP服务器程序(tsTserv.py):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
TCP客户端程序(tsTclnt.py):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
python+tcp实现客户端交互_qq_46105093的博客-CSDN博客_python tcp客户端
1.client
客户端的基本流程:
1.初始化socket()
2.使用ip和端口号connect()连接服务器
3.使用recv()接收数据,send()发送数据与服务器进行交互
代码如下(示例):
import socket
client = socket.socket()
client.connect(('127.0.0.1',9044)) #连接服务器
while True:
msg = input(">>:").strip()
if len(msg) == 0 :continue
client.send(msg.encode()) #发送数据
data = client.recv(1024) #接收数据
print("返回数据:",data.decode())
2.server
服务器端的基本流程:
1.初始化socket()
2.使用bind()绑定ip和端口号
3使用listen()监听消息
4.获取客户端的套接字地址accept()
5.使用recv()接收数据,send()发送数据与客户端进行交互
代码:
import socket
import re
server = socket.socket() #初始化
server.bind(('127.0.0.1',9044)) #绑定ip和端口
server.listen(5) #监听,设置最大数量是5
print("开始等待接受客户端数据----")
while True:
conn,addr = server.accept() #获取客户端地址
print(conn,addr)
print("客户端来数据了")
while True:
data = conn.recv(1024) #接收数据
print("接受的数据:",data)
d=data.decode('utf-8')
print(d)
# print(d[0],d[1],d[2])
if not d or d=='exit':
print("client has lost")
conn.close()
elif d=='dady':
conn.send((d+',i am from %s:%s.' % addr).encode('utf-8')) #返回数据
elif ' ' in d:
m=d.split()[1]
n=d.split()[0]
print(m,n)
a=re.findall(m,n)
print(a)
conn.send(str(a).encode('utf-8'))
elif '+'in d:
try:
# print(i)
a=eval(d)
conn.send(str(a).encode('utf-8'))
except Exception as e:
print('wrong{}'.format(type(e)))
elif '-'in d:
try:
# print(i)
a=eval(d)
conn.send(str(a).encode('utf-8'))
except Exception as e:
print('wrong{}'.format(type(e)))
elif '*'in d:
try:
# print(i)
a=eval(d)
conn.send(str(a).encode('utf-8'))
except Exception as e:
print('wrong{}'.format(type(e)))
elif '/'in d:
try:
# print(i)
a=eval(d)
conn.send(str(a).encode('utf-8'))
except Exception as e:
print('wrong{}'.format(type(e)))
else:
conn.send(str(d).encode('utf-8'))
FLASK
1.设置请求回应,浏览器输入http://0.0.0.0:8090/time就可以看到OK
请求这个URL也会得到OK
python3 flask接收数据处理_18923489164的博客-CSDN博客
from flask import Flask
import time
app = Flask(__name__)
@app.route('/')
def index():
return "Hello pyhon"
@app.route('/time')
def t():
#now = time.strftime("%Y-%m-%d-%H_%M_%S", time.localtime())
#return now
return "OK"
@app.route('/get/<name>')# 访问http://127.0.0.1:8090/get/563249423 就会返回我提交的数据
def get(name):
return "<h1>提交的数据为: {0}</h1>".format(name)
if __name__=="__main__":
app.run(host="0.0.0.0", port=8090)
2.请求一般是requests.get或者requests.post两大类
例如:
import requests
formdata = {
"type":"AUTO",
"i":"i love python",
"doctype":"json",
"xmlVersion":"1.8",
"keyfrom":"fanyi.web",
"ue":"UTF-8",
"action":"FY_BY_ENTER",
"typoResult":"true"
}
url = "http://0.0.0.0:8090/time"
headers={ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"}
response = requests.post(url, data = formdata, headers = headers)
print (response.text)#打印是OK
python 爬虫 - 学习 urllib 和 requests 使用,模拟请求_AudiA6LV6的博客-CSDN博客_python模拟网页请求
import requests
formdata = {
"type":"AUTO",
"i":"i love python",
"doctype":"json",
"xmlVersion":"1.8",
"keyfrom":"fanyi.web",
"ue":"UTF-8",
"action":"FY_BY_ENTER",
"typoResult":"true"
}
url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=null"
headers={ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"}
response = requests.post(url, data = formdata, headers = headers)
print (response.text)