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类的定义、继承及类对象使用方法简明教程
May 08 Python
python实现简单ftp客户端的方法
Jun 28 Python
在Python的Django框架中编写错误提示页面
Jul 22 Python
使用Python+wxpy 找出微信里把你删除的好友实例
Feb 21 Python
​如何愉快地迁移到 Python 3
Apr 28 Python
PyQt5实现简易电子词典
Jun 25 Python
python线程的几种创建方式详解
Aug 29 Python
Django在Model保存前记录日志实例
May 14 Python
Python使用Selenium实现淘宝抢单的流程分析
Jun 23 Python
Python 在局部变量域中执行代码
Aug 07 Python
python字符串的多行输出的实例详解
Jun 08 Python
Python爬虫中urllib3与urllib的区别是什么
Jul 21 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
Apache服务器下防止图片盗链的办法
2015/07/06 PHP
php实现数字补零的方法总结
2018/09/12 PHP
添加到收藏夹代码(兼容几乎所有的浏览器)
2007/01/09 Javascript
javascript学习基础笔记之DOM对象操作
2011/11/03 Javascript
自己写的Javascript计算时间差函数
2013/10/28 Javascript
一个奇葩的最短的 IE 版本判断JS脚本
2014/05/28 Javascript
IE下通过a实现location.href 获取referer的值
2014/09/04 Javascript
jQuery分组选择器用法实例
2014/12/23 Javascript
jQuery表单域属性过滤器用法分析
2015/02/10 Javascript
举例简介AngularJS的内部语言环境
2015/06/17 Javascript
BootStrap的Datepicker控件使用心得分享
2016/05/25 Javascript
微信小程序  checkbox组件详解及简单实例
2017/01/10 Javascript
Jquery uploadify 多余的Get请求(404错误)的解决方法
2017/01/26 Javascript
100行代码理解和分析vue2.0响应式架构
2017/03/09 Javascript
Vue 2.X的状态管理vuex记录详解
2017/03/23 Javascript
微信小程序 跳转传递数据的实例
2017/07/06 Javascript
vue组件中watch props根据v-if动态判断并挂载DOM的问题
2019/05/12 Javascript
JS函数基本定义与用法示例
2020/01/15 Javascript
jQuery实现点击滚动到指定元素上的方法分析
2020/03/19 jQuery
Python中使用Inotify监控文件实例
2015/02/14 Python
使用Python3中的gettext模块翻译Python源码以支持多语言
2015/03/31 Python
基于Python2、Python3中reload()的不同用法介绍
2019/08/12 Python
python sklearn常用分类算法模型的调用
2019/10/16 Python
python二维键值数组生成转json的例子
2019/12/06 Python
CentOS7下安装python3.6.8的教程详解
2020/01/03 Python
使用python-cv2实现Harr+Adaboost人脸识别的示例
2020/10/27 Python
使用Html5实现异步上传文件,支持跨域,带有上传进度条
2016/09/17 HTML / CSS
澳大利亚领先的运动鞋商店:Hype DC
2018/03/31 全球购物
介绍一下JMS编程步骤
2015/09/22 面试题
《棉鞋里的阳光》教学反思
2014/04/24 职场文书
市场营销策划方案
2014/06/11 职场文书
整改落实情况汇报材料
2014/10/29 职场文书
Redis IP地址的绑定的实现
2021/05/08 Redis
为什么你写的height:100%不起作用
2021/05/10 HTML / CSS
MongoDB误操作后使用oplog恢复数据
2022/04/11 MongoDB
js前端设计模式优化50%表单校验代码示例
2022/06/21 Javascript