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 相关文章推荐
一则python3的简单爬虫代码
May 26 Python
Python计算字符宽度的方法
Jun 14 Python
Python栈算法的实现与简单应用示例
Nov 01 Python
python使用sqlite3时游标使用方法
Mar 13 Python
浅析python中numpy包中的argsort函数的使用
Aug 30 Python
Python Series从0开始索引的方法
Nov 06 Python
浅析pandas 数据结构中的DataFrame
Oct 12 Python
python Opencv计算图像相似度过程解析
Dec 03 Python
python实现密码验证合格程序的思路详解
Jun 01 Python
python实现从ftp上下载文件的实例方法
Jul 19 Python
15个应该掌握的Jupyter Notebook使用技巧(小结)
Sep 23 Python
next在python中返回迭代器的实例方法
Dec 15 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代码质量36计
2012/09/05 PHP
初步介绍PHP扩展开发经验分享
2012/09/06 PHP
php定时执行任务设置详解
2015/02/06 PHP
php简单计算页面加载时间的方法
2015/06/19 PHP
PHP实现抽奖功能实例代码
2020/06/30 PHP
PHP连接SQL server数据库测试脚本运行实例
2020/08/24 PHP
JavaScript中的对象化编程
2008/01/16 Javascript
jQuery 使用手册(六)
2009/09/23 Javascript
js实现进度条的方法
2015/02/13 Javascript
jquery实现的代替传统checkbox样式插件
2015/06/19 Javascript
jQuery实现新消息在网页标题闪烁提示
2015/06/23 Javascript
javaScript实现可缩放的显示区效果代码
2015/10/26 Javascript
使用ajaxfileupload.js实现上传文件功能
2016/08/13 Javascript
微信小程序 loading(加载中提示框)实例
2016/10/28 Javascript
nodejs中全局变量的实例解析
2017/03/07 NodeJs
微信小程序中做用户登录与登录态维护的实现详解
2017/05/17 Javascript
js插件实现图片滑动验证码
2020/09/29 Javascript
给localStorage设置一个过期时间的方法分享
2018/11/06 Javascript
微信小程序npm引入vant-weapp的踩坑记录
2019/08/01 Javascript
[08:47]2018国际邀请赛 OG战队举杯时刻
2018/08/29 DOTA
如何使用pyinstaller打包32位的exe程序
2019/05/26 Python
django中的图片验证码功能
2019/09/18 Python
Python pandas库中的isnull()详解
2019/12/26 Python
jupyter notebook oepncv 显示一张图像的实现
2020/04/24 Python
ubuntu16.04升级Python3.5到Python3.7的方法步骤
2020/08/20 Python
Python多分支if语句的使用
2020/09/03 Python
爱奇艺VIP会员:大剧抢先看
2018/07/11 全球购物
客服主管岗位职责
2013/12/13 职场文书
思想政治教育专业个人求职信范文
2013/12/20 职场文书
综合实践教学反思
2014/01/31 职场文书
力学专业求职信
2014/07/23 职场文书
2015年六一儿童节活动方案
2015/05/05 职场文书
不同意离婚代理词
2015/05/23 职场文书
亮剑观后感500字
2015/06/05 职场文书
python引入其他文件夹下的py文件具体方法
2021/05/23 Python
html中显示特殊符号(附带特殊字符对应表)
2021/06/21 HTML / CSS