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- ...
随机推荐
- ftp部署及使用
常用软件安装及使用目录 http://www.jb51.net/article/106604.htm ftp部署 本篇文章主要介绍了CentOS7.0下安装FTP服务的方法,小编觉得挺不错的,现在 ...
- ./configure的含义
在实践安装nginx的时候,不知道./configure是什么意思,这里特地记录一下. 在linux中./代表当前目录,属于相对路径../代表上一级目录,属于相对路径/代表根目录,/开头的文件都是绝对 ...
- 第10讲:利用SQL语言实现关系代数操作
一.实现并.交.差运算 1. 基本语法形式:子查询 [union [all] | intersect [all] | except [all] 子查询] ①意义:将关系代数中的∪.∩.- 分别用uni ...
- 软件工程第十周psp
1.PSP表格 2.进度条 3.饼状图 4.折线图
- 配置JDBC
在数据库和MyEclipse都安装好的情况下进行配置: 1.将JDBC(sqljdbc_4.0.2206.100_chs.exe)文件解压到C盘program files下面(也可以将解压后的文件Mi ...
- ASP.NET MVC 4.0 参考源码索引
http://www.projky.com/asp.netmvc/4.0/Microsoft/AspNet/Mvc/Facebook/FacebookAppSettingKeys.cs.htmlhtt ...
- tomcat文件中server.xml 实例说明
<?xml version='1.0' encoding='utf-8'?> # 这是server类, 指定一个tomcat的应用实例 <Server port="80 ...
- 1105 C程序的推导过程
- PAT 甲级 1142 Maximal Clique
https://pintia.cn/problem-sets/994805342720868352/problems/994805343979159552 A clique is a subset o ...
- IDEA 开发工具的快捷键
IDEA 开发工具的快捷键 原文链接:http://blog.csdn.net/wfp458113181wfp/article/details/24579781 1.文本编辑 删除 ctr + ...