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实现从web抓取文档的方法
Sep 26 Python
关于python下cv.waitKey无响应的原因及解决方法
Jan 10 Python
Python3爬虫之自动查询天气并实现语音播报
Feb 21 Python
Python常见读写文件操作实例总结【文本、json、csv、pdf等】
Apr 15 Python
使用python爬取抖音视频列表信息
Jul 15 Python
Python编程快速上手——选择性拷贝操作案例分析
Feb 28 Python
Python动态导入模块:__import__、importlib、动态导入的使用场景实例分析
Mar 30 Python
Python常用库Numpy进行矩阵运算详解
Jul 21 Python
Python命名空间及作用域原理实例解析
Aug 12 Python
Django如何实现防止XSS攻击
Oct 13 Python
python实现测试工具(二)——简单的ui测试工具
Oct 19 Python
python实现Thrift服务端的方法
Apr 20 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
Codeigniter框架实现获取分页数据和总条数的方法
2014/12/05 PHP
Laravel如何使用数据库事务及捕获事务失败后的异常详解
2017/10/23 PHP
ie 7/8不支持trim的属性的解决方案
2014/05/23 Javascript
javascript单例模式的简单实现方法
2015/07/25 Javascript
在JavaScript中如何解决用execCommand(
2015/10/19 Javascript
javascript瀑布流式图片懒加载实例解析与优化
2016/02/23 Javascript
基于javascript制作微博发布栏效果
2016/04/04 Javascript
Bootstrap基本组件学习笔记之input输入框组(9)
2016/12/07 Javascript
详解支持Angular 2的表格控件
2017/01/19 Javascript
vue实现简单表格组件实例详解
2017/04/16 Javascript
JavaScript Drum Kit 指南(纯 JS 模拟敲鼓效果)
2017/07/23 Javascript
Vue单页应用引用单独的样式文件的两种方式
2018/03/30 Javascript
JS实现自定义弹窗功能
2018/08/08 Javascript
Jquery的autocomplete插件用法及参数讲解
2019/03/12 jQuery
详解基于Wepy开发小程序插件(推荐)
2019/08/01 Javascript
jquery实现掷骰子小游戏
2019/10/24 jQuery
微信小程序静默登录的实现代码
2020/01/08 Javascript
jQuery实现简单评论功能
2020/08/19 jQuery
[54:51]Ti4 冒泡赛第二轮LGD vs C9 3
2014/07/14 DOTA
Python高级应用实例对比:高效计算大文件中的最长行的长度
2014/06/08 Python
浅谈Python中的zip()与*zip()函数详解
2018/02/24 Python
可能是最全面的 Python 字符串拼接总结【收藏】
2018/07/09 Python
python一行sql太长折成多行并且有多个参数的方法
2018/07/19 Python
Python通过socketserver处理多个链接
2020/03/18 Python
python 制作网站小说下载器
2021/02/20 Python
css3实现一个div设置多张背景图片及background-image属性实例演示
2017/08/10 HTML / CSS
HTML5拖放功能_动力节点Java学院整理
2017/07/13 HTML / CSS
劳力士官方珠宝商:J.R. Dunn Jewelers
2018/09/29 全球购物
英国哈罗德园艺:Harrod Horticultural
2020/03/31 全球购物
开放系统互连参考模型
2016/06/29 面试题
自主招生自荐信
2013/12/08 职场文书
培训讲师岗位职责
2014/04/13 职场文书
2014年建筑工程工作总结
2014/12/03 职场文书
《自己去吧》教学反思
2016/02/16 职场文书
html实现随机点名器的示例代码
2021/04/02 Javascript
MYSQL中文乱码问题的解决方案
2022/06/14 MySQL