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算法应用实战之栈详解
Feb 04 Python
python使用adbapi实现MySQL数据库的异步存储
Mar 19 Python
关于Python作用域自学总结
Jun 10 Python
Pycharm远程调试原理及具体配置详解
Aug 08 Python
python实现邮件发送功能
Aug 10 Python
python框架flask表单实现详解
Nov 04 Python
python列表切片和嵌套列表取值操作详解
Feb 27 Python
python实现批量命名照片
Jun 18 Python
python Socket网络编程实现C/S模式和P2P
Jun 22 Python
python实现斗地主分牌洗牌
Jun 22 Python
Python中的turtle画箭头,矩形,五角星
Mar 16 Python
Python使用openpyxl模块处理Excel文件
Jun 05 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 创建以UNIX时间戳命名的文件夹(示例代码)
2014/03/08 PHP
PHP实现上传文件并存进数据库的方法
2015/07/16 PHP
深入理解PHP中的count函数
2016/05/31 PHP
在Thinkphp中使用ajax实现无刷新分页的方法
2016/10/25 PHP
浅谈php中curl、fsockopen的应用
2016/12/10 PHP
PHP中实现中文字串截取无乱码的解决方法
2018/05/29 PHP
几个高效,简洁的字符处理函数
2007/04/12 Javascript
固定网页背景图同时保持图片比例的思路代码
2013/08/15 Javascript
jQuery trigger()方法用法介绍
2015/01/13 Javascript
JavaScript中return false的用法
2015/03/12 Javascript
基于Jquery代码实现手风琴菜单
2015/11/19 Javascript
JS获取IMG图片高宽的简单实例
2016/05/17 Javascript
从重置input file标签中看jQuery的 .val() 和 .attr(“value”) 区别
2016/06/12 Javascript
jQuery元素属性操作实例(设置、获取及删除元素属性)
2016/09/08 Javascript
最原始的jQuery注册验证方式
2016/10/11 Javascript
将form表单通过ajax实现无刷新提交的简单实例
2016/10/12 Javascript
nodejs个人博客开发第五步 分配数据
2017/04/12 NodeJs
微信小程序返回多级页面的实现方法
2017/10/27 Javascript
解决iview多表头动态更改列元素发生的错误的方法
2018/11/02 Javascript
javascript(基于jQuery)实现鼠标获取选中的文字示例【测试可用】
2019/10/26 jQuery
收藏整理的一些Python常用方法和技巧
2015/05/18 Python
Python读取Json字典写入Excel表格的方法
2018/01/03 Python
hmac模块生成加入了密钥的消息摘要详解
2018/01/11 Python
pandas修改DataFrame列名的实现方法
2019/02/22 Python
Python使用统计函数绘制简单图形实例代码
2019/05/15 Python
django的分页器Paginator 从django中导入类
2019/07/25 Python
Python ORM编程基础示例
2020/02/02 Python
Html5+JS实现手机摇一摇功能
2015/04/24 HTML / CSS
法国一家多品牌成衣精品中/高档商店:Graduate Store
2019/08/28 全球购物
幼儿如何来做好自我评价
2013/11/05 职场文书
工商管理毕业生推荐信
2013/12/24 职场文书
关于廉洁的广播稿
2014/01/30 职场文书
地理科学专业自荐信
2014/09/01 职场文书
详解Apache SkyWalking 告警配置指南
2021/04/22 Servers
Django使用channels + websocket打造在线聊天室
2021/05/20 Python
Python中seaborn库之countplot的数据可视化使用
2021/06/11 Python