Python基础——网络编程
时间:2022-05-04
本文章向大家介绍Python基础——网络编程,主要内容包括1、Socket工作方式、2、服务器端、3、客户端、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
在网络编程中主要是使用Socket(套接字)进行编程,套接字相当于应用程序访问下层网络的服务的接口,使用Socket可以是得不同主机之间进行通信,从而实现数据交换。
1、Socket工作方式
套接字在工作的时候连接的两端分别为客户端和服务器端,对于客户端和服务器端的工作方式是不一样的。
对于服务器端,服务器程序会在一个端口上监听服务请求,该服务器进程是一直存在的,当有客户端请求访问时,服务器进程会和客户端进程进行通信。
在Python中的套接字模块是socket模块。
2、服务器端
在上述的Socket工作原理中,服务器端程序会在一个端口上监听请求服务,当有客户端请求访问时,才和客户端进程进行通信。在Python中提供的socket模块可以较为方便的实现基本的原理。对于服务器端,当生成了套接字对象后,要实现与客户端进行通信,有如下的一些步骤:
- 调用
bind()
方法绑定一个套接字端口地址 - 使用
listen()
方法对该端口进行客户端请求的监听 - 当有客户端请求时,通过
accept()
方法生成一个连接对象,通过该连接对象发送和接受数据 - 当数据传输完毕,调用
close()
方法将生成的连接关闭
利用Python实现一个简单的服务器端程序:
#coding:UTF-8
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('127.0.0.1', 1234))
s.listen(10)
while True:
c, addr = s.accept()
print "client address: ", addr
c.send("Welcome!!!")
c.close()
3、客户端
与服务器端相对应,客户端请求服务器端的访问,当服务器端接受了客户端的请求后,便可以与服务器端进行通信。客户端程序在生成套接字对象后的基本过程如下:
- 调用
bind()
方法绑定自己的请求套接字地址(该步骤可选) - 调用
connect()
方法连接服务器端的进程 - 当连接成功后,可使用
send()
方法发送数据,使用recv()
函数接收数据 - 当数据传输结束后,可调用
close()
方法关闭连接
利用Python实现一个简单的客户端程序:
#coding:UTF-8
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('127.0.0.1', 2345))
s.connect(('127.0.0.1', 1234))#连接的是主机的地址和端口地址
info = s.recv(1024)
print info
s.close()
运行结果如下:
- 服务器端
- 客户端
- Selenium+python自动化82-只截某个元素的图
- libvirt-TLS加密
- 在openstck中配置使用cloud-init
- libvirt-使用cgroup做资源分割控制
- libvirt-usb设备透传给虚拟机
- Appium+python自动化22-Android夜神模拟器
- 每周学点大数据 | No.9递归——以阶乘为例
- appium+python自动化24-滑动方法封装(swipe)
- libvirt-虚拟机qos控制
- 【深度】Deep Visualization:可视化并理解CNN
- Appium+python自动化28-name定位
- Appium+python自动化29-toast消息
- guestfs这么强大你知道吗
- appium+python自动化30-list定位(find_elements)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 解决vue cli3.x打包上线静态资源找不到路径问题
- Ant-design-vue+vue-i18n实现前端国际化
- Mac OSX终端安装主题(oh my zsh)
- 谷歌浏览器油猴插件安装教程,让你的浏览器更加强大
- zabbix模块配置学习
- Windows下安装及使用NVM
- U盘上安装多个Linux发行版和PE
- ubuntu18.04部署python3、nginx项目
- CentOS8.x系统配置记录
- js根据经纬度换算行驶里程
- ubuntu18.04 安装docker
- COBBLER无人值守批量安装系统.md
- 使用VSCode 打包你的第一个flutter应用(安卓篇)
- KICKSTART无人值守批量安装系统.md
- Centos7-Firewall防火墙基础讲解