Python socket实现的简单通信功能示例


Posted in Python onAugust 21, 2018

本文实例讲述了Python socket实现的简单通信功能。分享给大家供大家参考,具体如下:

套接字(socket)是计算机网络数据结构,在任何类型的通信开始之前,网络应用程序必须创建套接字,可以将其比作电话的插孔,没有它将无法进行通信

常用的地址家族

  • AF_UNIX:基于文件,实现同一主机不同进程之间的通信
  • AF_INET:基于网络,适用于IPv4
  • AF_INET6:基于网络,使用于IPv6

常见的连接类型

  • SOCK_STREAM:即TCP/IP。面向连接的套接字,通信之前必须建立可靠的连接。面向连接的套接字提供序列化的、可靠的和不重复的数据交付,而没有记录边界。
  • SOCK_DGRAM:即UDP。面向非连接的套接字,通信之前无需建立连接。在数据传输过程中无法保证数据的有序性、可靠性和重复性。然而数据报确实保存了记录边界,意味着数据是以整体发送的,而非事先切割多个片段。

socket通信

  • server端
import socket
server = socket.socket()  # 默认是AF_INET、SOCK_STREAM
server.bind(("localhost",6868))   # 将主机号与端口绑定到套接字
server.listen()   # 设置并启动TCP监听器
while True:
  conn,addr = server.accept()   # 被动接受TCP连接,一直等待连接到达
  while True:
    data = conn.recv(1024)   # 接收TCP消息,并制定最大长度
    if not data:
      print("连接已断开")
      break
    conn.send(data.upper())  # 将接收到的数据转为大写在发回给它
server.close()
  • client端
import socket
client = socket.socket()  # 默认是AF_INET、SOCK_STREAM
client.connect(("localhost",6868))
while True:
  s = input(">>")
  client.send(s.encode("utf-8"))
  data = client.recv(1024)
client.close()

执行结果:

Python socket实现的简单通信功能示例

socketserver模块

使用socketserver实现多并发

import socketserver
class MyServer(socketserver.BaseRequestHandler):
  def handle(self):
    while True:
      self.data = self.request.recv(1024)
      if not self.data:
        print("%s客户端连接已断开"%self.client_address)
        break
      self.request.sendall(self.data.upper())
if __name__ == "__main__":
  server = socketserver.ThreadingTCPServer(("localhost",6969),MyServer)  # 开启一个线程
  server.serve_forever()

更多关于Python相关内容可查看本站专题:《Python Socket编程技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python ORM框架SQLAlchemy学习笔记之关系映射实例
Jun 10 Python
Python通用函数实现数组计算的方法
Jun 13 Python
python 随机生成10位数密码的实现代码
Jun 27 Python
python中的&&及||的实现示例
Aug 07 Python
python聚类算法解决方案(rest接口/mpp数据库/json数据/下载图片及数据)
Aug 28 Python
python 怎样将dataframe中的字符串日期转化为日期的方法
Sep 26 Python
python模拟点击网页按钮实现方法
Feb 25 Python
Python写捕鱼达人的游戏实现
Mar 31 Python
aws 通过boto3 python脚本打pach的实现方法
May 10 Python
Python RabbitMQ实现简单的进程间通信示例
Jul 02 Python
利用python 读写csv文件
Sep 10 Python
Python标准库之typing的用法(类型标注)
Jun 02 Python
Python多进程原理与用法分析
Aug 21 #Python
python安装twisted的问题解析
Aug 21 #Python
使用python的pandas库读取csv文件保存至mysql数据库
Aug 20 #Python
Python多线程原理与用法详解
Aug 20 #Python
Python模拟简单电梯调度算法示例
Aug 20 #Python
django_orm查询性能优化方法
Aug 20 #Python
Python Requests库基本用法示例
Aug 20 #Python
You might like
php简单静态页生成过程
2008/03/27 PHP
php数组比较实现查找连续数的方法
2015/07/29 PHP
PHP抽奖算法程序代码分享
2015/10/08 PHP
PHP内核探索之解释器的执行过程
2015/12/22 PHP
php实现根据身份证获取精准年龄
2020/02/26 PHP
PHP使用PhpSpreadsheet操作Excel实例详解
2020/03/26 PHP
asm.js使用示例代码
2013/11/28 Javascript
特殊情况下如何获取span里面的值
2014/05/20 Javascript
jquery实现标签上移、下移、置顶
2015/04/26 Javascript
简介JavaScript中的sub()方法的使用
2015/06/08 Javascript
完美解决jQuery fancybox ie 无法显示关闭按钮的问题
2016/11/29 Javascript
基于jQuery实现咖啡订单管理简单应用
2017/02/10 Javascript
Vue.js中的computed工作原理
2018/03/22 Javascript
解决vue2 在mounted函数无法获取prop中的变量问题
2018/11/15 Javascript
angular2 NgModel模块的具体使用方法
2019/04/10 Javascript
在Vue.js中使用TypeScript的方法
2020/03/19 Javascript
JavaScript经典案例之简易计算器
2020/08/24 Javascript
python读取csv文件示例(python操作csv)
2014/03/11 Python
Python利用Nagios增加微信报警通知的功能
2016/02/18 Python
Python编程判断一个正整数是否为素数的方法
2017/04/14 Python
Python下载网络文本数据到本地内存的四种实现方法示例
2018/02/05 Python
基于Python3.6+splinter实现自动抢火车票
2018/09/25 Python
python实现的爬取电影下载链接功能示例
2019/08/26 Python
修改 CentOS 6.x 上默认Python的方法
2019/09/06 Python
python不同系统中打开方法
2020/06/23 Python
Html5移动端获奖无缝滚动动画实现示例
2018/06/25 HTML / CSS
英国航空官网:British Airways
2016/09/11 全球购物
乌克兰的第一家手表店:Deka
2020/03/05 全球购物
什么时候需要进行强制类型转换
2016/09/03 面试题
服装电子商务创业计划书
2014/01/30 职场文书
教师产假请假条范文
2014/04/10 职场文书
竞选班长演讲稿400字
2014/08/22 职场文书
一份恶作剧的检讨书
2014/09/13 职场文书
Sql-Server数据库单表查询 4.3实验课
2021/04/05 SQL Server
go语言map与string的相互转换的实现
2021/04/07 Golang
springboot+WebMagic+MyBatis爬虫框架的使用
2021/08/07 Java/Android