python 网络编程 主要有socket模块、BaseHTTPServer模块。socket属于更底层次,方便在日常运维工作中使用, http web接口更适合开放给外部人员使用,毕竟大多数语言都很方便支持http请求。

首先看最基本socket客户端与服务端实例:

#!/usr/bin/python
#coding=utf-8
import socket
host = 'xx'
socketport = '1009'
flag = 'xxxx'sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((host, int(socketport)))
sock.send(flag)
recv = sock.recv(1024)
print "接收终端返回码:"+recv
sock.close()
#!/usr/bin/python
#coding=utf-8
import os
import sys
import commands
import traceback
import socket
reload(sys)
sys.setdefaultencoding('utf8')def oscmd(buf):cmdtype = buf.strip()##业务逻辑代码、处理完毕返回给客端#connection.send('sucess')# Step1: 创建socket对象
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 让socket支持地址复用 默认是不支持的
sock.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
# Step2: 配置socket  绑定IP和端口
sock.bind(('0.0.0.0', 1009))
# 设置最大允许连接数,各连接和server的通信遵循FIFO原则
sock.listen(1)# Step3: 循环轮询socket状态,等待访问
while 1:try:#获取连接connection,address = sock.accept()buf = connection.recv(10240)src_ip = address[0]src_port = str(address[1])print "接收提交请求:["+ buf +"] 发送源:["+ src_ip +":"+ src_port+"]"# Step4:处理请求数据,验证更新key,录入更新任务,返回处理结果oscmd(buf)except (KeyboardInterrupt, SystemExit):print "链接错误,请检查!"raise Exception

socket多线程,同时并发处理多个请求。加入了python多线程而已

def handle_connection(conn,addr)def main():# socket.AF_INET    用于服务器与服务器之间的网络通信# socket.SOCK_STREAM    基于TCP的流式socket通信serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 设置端口可复用,保证我们每次Ctrl C之后,快速再次重启serversocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)serversocket.bind(('192.168.2.221', 10089))# 可参考:https://stackoverflow.com/questions/2444459/python-sock-listenserversocket.listen(5)try:while True:conn,addr = serversocket.accept()t = threading.Thread(target=handle_connection, args=(conn,addr))t.start()finally:serversocket.close()

web接口客户端与服务端实例、服务端支持GET与POST请求

get请求
curl 192.168.11.xx:1009/api
post请求(json格式)
curl localhost:9999/api/daizhige/article -X POST -H "Content-Type:application/json" -d '"title":"comewords","content":"articleContent"'
#!/usr/bin/python
#encoding=utf-8
'''
基于BaseHTTPServer的http server实现,包括get,post方法,get参数接收,post参数接收。
'''
from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
import io,shutil
import urllib
import os, sys
import commandsclass MyRequestHandler(BaseHTTPRequestHandler):def do_GET(self):mpath,margs=urllib.splitquery(self.path) self.do_action(mpath,margs)def do_POST(self):mpath,margs=urllib.splitquery(self.path)datas = self.rfile.read(int(self.headers['content-length']))self.do_action(mpath, datas)def do_action(self,args):self.outputtxt( args )def outputtxt(self, content):#指定返回编码enc = "UTF-8"content = content.encode(enc)f = io.BytesIO()f.write(content)f.seek(0)self.send_response(200)self.send_header("Content-type", "text/html; charset=%s" % enc)self.send_header("Content-Length", str(len(content)))self.end_headers()shutil.copyfileobj(f,self.wfile)def main():try:server = HTTPServer(('192.168.xx.219',1009),MyRequestHandler)print 'welcome to websocket'server.serve_forever()except KeyboardInterrupt:print 'shutting down server'server.socket.close()
if __name__ == '__main__':main()

python 基础之 socket接口与web接口相关推荐

  1. python自动化接口_Python接口自动化——Web接口

    原标题:Python接口自动化--Web接口 1.2.1 web接口的概念 这里用一个浏览器调试工具捕捉课程管理页面请求作为例子: 当请求页面时,服务器会返回资源,将协议看做是路的话,http可以看做 ...

  2. python前端接口_Python接口自动化——Web接口

    1.2.1 web接口的概念 这里用一个浏览器调试工具捕捉课程管理页面请求作为例子: 当请求页面时,服务器会返回资源,将协议看做是路的话,http可以看做高速公路,soap看做铁路传输的数据有html ...

  3. Python基础入门教程:Day21-30/Web前端概述

    Python基础入门教程:Web前端概述 说明:本文使用的部分插图来自 Jon Duckett 先生的*HTML and CSS: Design and Build Websites*一书,这是一本非 ...

  4. Day1 - Python基础1作业【编写登陆接口】

    1 # 作业:编写登陆接口 2 # 输入用户名密码 3 # 认证成功后显示欢迎信息 4 # 输错三次后锁定 5 import getpass 6 7 user = {'hepd':123456, 'h ...

  5. python基础之socket编程

    阅读目录 一 客户端/服务器架构 二 osi七层 三 socket层 四 socket是什么 五 套接字发展史及分类 六 套接字工作流程 七 基于TCP的套接字 八 基于UDP的套接字 九 粘包现象 ...

  6. 麦子学院彭亮python基础_麦子学院python

    教程名称:麦子学院python 麦子学院PYTHON ├─第一阶段:python基础准备 │xa0 ├─1.Web前端开发之HTML+CSS基础入门 │xa0 ├─2.Javascript初步 │xa ...

  7. 《Web接口开发与自动化测试 -- 基于Python语言》 ---前言

    前    言 本书的原型是我整理一份Django学习文档,从事软件测试工作的这六.七年来,一直有整理学习资料的习惯,这种学习理解再输出的方式对我非常受用,博客和文档是我主要的输出形式,这些输出同时也帮 ...

  8. 【Web接口测试_基础概念】接口概念、接口分类、接口定义、接口规范、接口方法、接口用例设计整理

    [接口基础] 1.接口测试概念 1.1 基础概念 接口的定义:接口英文"interface",表示某个对象和外界交互的部分. 1.2接口的分类: ①用户UI接口,表示提供给用户操作 ...

  9. 失业在家抠脚的我花了2个月,读完了这份《Python Web接口开发与测试》,我居然进华为了...

    学习计划 失业在家抠脚到华为年薪25w测试工程师,我只花了2个月~ 底层逻辑 如果要进大厂,算法.底层.项目经验都要刷,小编以后会给大家更新各种面试题-- 如果要进大厂,项目经验.底层算法.网络.数据 ...

最新文章

  1. iOS判断UIWebView加载完成的方法
  2. Android dex分包方案 (多dex)
  3. Matlab变量、分支语句和循环语句
  4. 如何为libs目录下的jar包关联源代码
  5. CTR学习笔记代码实现1-深度学习的前奏LR-FFM
  6. map中key值带‘-’转json_h5模型转savedModel + tf_serving部署采坑记录
  7. Android IPC(二)Messenger实现跨进程双向通信
  8. 项目启动大会和项目开工会议的区别
  9. html修改成透明色,在html2canvas中将透明颜色更改为白色
  10. 缓存(Cookie,SessionStorage,localStorage)详解
  11. AM5728 linux内核编译方法
  12. ECCV 2022全奖项公布,两位华人学者摘得最佳论文奖,本科来自清华、浙大
  13. 正则表达式 语法详解
  14. 加速网站访问的一些实践体会
  15. 京东商城(360Buy)价格识别 java版
  16. c语言红酒编程题,葡萄酒基础知识试题解析一
  17. 防伪热点:洪都拉斯推出钞票设计,暗示独立二百周年!
  18. git clone之后修改了东西 推到远程库去
  19. RoboMasterAI挑战赛-装甲板识别与测距 jetsonNX+realsense
  20. 马斯克回应被联合国逼捐?发中文《七步诗》引热议

热门文章

  1. 51M APP Tech Support
  2. mybatis源码分析3 - sqlSession的创建
  3. Spring Security文档
  4. spring 帮助文档
  5. 马云:一篇百看不厌的文章
  6. 清华大学计算机与芯片专业,池保勇
  7. vue+element-ui小结
  8. windows下jenkins运行jar包的命令
  9. C语言 实现冒泡排序函数
  10. python中input同时输入多个_python如何利用input函数输入多个参数?