python学习(20) 网络编程
原文链接:http://www.limerence2017.com/2018/01/02/python20/
python 网络编程和基本的C语言编程一样,效率不是很高,如果为了封装通信库
建议采用C/C++做底层封装,采用epoll、poll、iocp等网络模型封装,编译成网络库
供其他模块使用。这里在python学习过程中介绍一下
TCP 编程 服务器端
1 创建套接字
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
AF_INET表示网络通信,SOCK_STRAM表示面向字节流TCP方式通信。
2 绑定端口和地址
s.bind((‘127.0.0.1’,9999))
3 监听套接字
s.listen(5)
5,表示监听队列最大多长。
4 接收客户端连接
sock, addr = s.accept()
s为生成的socket,accept接收客户端连接,返回对端描述符和地址
5 接收数据
data = sock.recv(1024)
sock为对端socket,recv接收数据,最多接收1024
6 发送数据
sock.send((‘Hello, %s’ %data.decode(‘utf-8’)).encode(‘utf-8’))
7 关闭描述符
sock.close()
TCP客户端编程
1 创建一个socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
2 建立连接、
s.connect((‘127.0.0.1’, 9999))
3 接收消息和发送消息
s.send(data)
s.recv(1024).decode(‘utf-8’)
4 关闭描述符
s.close()
服务端案例:
1 |
import socket |
客户端:
1 |
import socket #创建一个socket |
UDP通信
udp通信和tcp通信不一样,很简单。服务器端不需要监听和accept,
客户端也不需要connect。
服务端 示例:
1 |
import socket s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) |
服务器端绑定好端口和地址后,调用recvfrom返回数据和对端地址
客户端 示例:
1 |
import socket s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) |
客户端发送数据和接收数据和之前一样,仅仅是不需要调用connect连接服务器了。
谢谢关注我的公众号:
python学习(20) 网络编程的更多相关文章
- python学习之网络编程基础
引入场景:客户与银行关系 银行职员负责给客户提供取钱服务,客户通过账户密码跟银行职员建立合作关系.此时银行职员就可以作为服务器,当用户A取完钱后他需要等待下一个用户的接入,用户的账号密码就是建立合作关 ...
- python学习(九) 网络编程学习--简易网站服务器
python `网络编程`和其他语言都是一样的,服务器这块步骤为:`1. 创建套接字``2. 绑定地址``3. 监听该描述符的所有请求``4. 有新的请求到了调用accept处理请求` Python ...
- Python学习之==>网络编程
一.什么是网络编程 使用Python进行网络编程,就是通过Python打开一个网站,或者请求一个http接口.可以通过标准模块urllib实现,也可以通过更简单易用的第三方模块requests实现. ...
- python学习总结---网络编程
网络编程 相关概念 - OSI七层模型:它从低到高分别是:物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. - TCP/IP: 在OSI七层模型基础上简化抽象出来的一套网络协议簇,现在得到 ...
- Python学习--19 网络编程
TCP编程 Client 创建一个基于TCP连接的Socket: # coding: utf-8 import socket # 创建一个TCP连接: s = socket.socket(socket ...
- Python学习day36-并发编程(2)
figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...
- 第六篇:python高级之网络编程
python高级之网络编程 python高级之网络编程 本节内容 网络通信概念 socket编程 socket模块一些方法 聊天socket实现 远程执行命令及上传文件 socketserver及 ...
- Python学习day40-并发编程(终)
figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...
- Python学习day39-并发编程(各种锁)
figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...
随机推荐
- 【quickhybrid】Android端的项目实现
前言 前文中就有提到,Hybrid模式的核心就是在原生,而本文就以此项目的Android部分为例介绍Android部分的实现. 提示,由于各种各样的原因,本项目中的Android容器确保核心交互以及部 ...
- 完整Highchart JS示例
线性: $.ajax({ type:'post', url:appPages.urlListTjrll, cache:false, data:{year:year,month:month},// // ...
- Notes of Daily Scrum Meeting(11.11)
Notes of Daily Scrum Meeting(11.11) 今天是11月11号光棍节,不知道大家的购物热情被点燃没有,有没有买到自己心仪的东西.额,今天我们的团队任务进度和昨天差不多, 每 ...
- 蹭课神器NABCD分析
特点:添加了课程分类,同学们可以根据自己的兴趣蹭课N(need):众所周知,大学是丰富多彩的自有天堂,学生能够在课余去旁听一些自己有兴趣的课,我们项目要解 决的就是同学们对校园课程有针对性的选择.A( ...
- 封装,策略,Asp换脸
封装.策略 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespac ...
- HDU3629(凸四边形的个数)
HDU 3629 计算几何 题目描述:给你n个点(4~700), 问你能够成多少个不同的凸四边形. 解题报告: 暴力的话C(700,4)必然超时,发现,任何一个凹包必然是其中一点在其它3点构成的三角形 ...
- Teamwork(The second day of the team)
梦之翼 5.20工作汇报: Master:杨灵超 产品负责人:杨家安 第一次Sprint的目标和时间: 目标:这一次的sprint我们想先做成一个可以运行的可以展示,但是功能或许还不是很完善的一个模型 ...
- 虚拟机环境下DPDK运行时的一些错误解决
在绑定网卡到DPDK模块时 报错 :is active. Not modifying Routing table indicates that interface 0000:02:01.0 is ac ...
- ADT图及图的实现及图的应用
图: 图中涉及的定义: 有向图: 顶点之间的相关连接具有方向性: 无向图: 顶点之间相关连接没有方向性: 完全图: 若G是无向图,则顶点数n和边数e满足:0<=e<=n(n-1)/2,当e ...
- Effective Modern C++翻译(6)-条款5:auto比显示的类型声明要更好
在概念上说,auto关键字和它看起来一样简单,但是事实上,它要更微妙一些的.使用auto会让你在声明变量时省略掉类型,同时也会防止了手动类型声明带来的正确性和性能上的困扰:虽然按照语言预先定义 ...