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的Tkinter编写登陆注册界面
Jun 30 Python
django文档学习之applications使用详解
Jan 29 Python
python @property的用法及含义全面解析
Feb 01 Python
python实现requests发送/上传多个文件的示例
Jun 04 Python
将Django项目部署到CentOs服务器中
Oct 18 Python
python多任务及返回值的处理方法
Jan 22 Python
学Python 3的理由和必要性
Nov 19 Python
Python笔记之代理模式
Nov 20 Python
Python可变对象与不可变对象原理解析
Feb 25 Python
如何使用Cython对python代码进行加密
Jul 08 Python
python3实现将json对象存入Redis以及数据的导入导出
Jul 16 Python
Python requests接口测试实现代码
Sep 08 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缩放图片(根据宽高的等比例缩放)实例介绍
2013/06/09 PHP
javascript数组与php数组的地址传递及值传递用法实例
2015/01/22 PHP
php设计模式之单例模式实例分析
2015/02/25 PHP
PHP实现图片自动清理的方法
2015/07/08 PHP
学习php设计模式 php实现合成模式(composite)
2015/12/08 PHP
PHP+Ajax实现的无刷新分页功能详解【附demo源码下载】
2017/07/03 PHP
php单元测试phpunit入门实例教程
2017/11/17 PHP
PHP实现简单注册登录系统
2020/12/28 PHP
让你的PHP,APACHE,NGINX支持大文件上传
2021/03/09 PHP
不懂JavaScript应该怎样学
2008/04/16 Javascript
javascript function、指针及内置对象
2009/02/19 Javascript
jquery validation插件表单验证的一个例子
2010/03/03 Javascript
常见的jQuery选择器汇总
2014/11/24 Javascript
jQuery中unbind()方法用法实例
2015/01/19 Javascript
javaScript数组迭代方法详解
2016/04/14 Javascript
JavaScript队列、优先队列与循环队列
2016/11/14 Javascript
AngularJs表单校验功能实例代码
2017/02/09 Javascript
AngularJS遍历获取数组元素的方法示例
2017/11/11 Javascript
Javasript设计模式之链式调用详解
2018/04/26 Javascript
详解基于React.js和Node.js的SSR实现方案
2019/03/21 Javascript
python读取浮点数和读取文本文件示例
2014/05/06 Python
Python 获得命令行参数的方法(推荐)
2018/01/24 Python
python url 参数修改方法
2018/12/26 Python
python 通过类中一个方法获取另一个方法变量的实例
2019/01/22 Python
python2.7的flask框架之引用js&css等静态文件的实现方法
2019/08/22 Python
Django 允许局域网中的机器访问你的主机操作
2020/05/13 Python
Python3 用什么IDE开发工具比较好
2020/11/28 Python
CSS3常用的几种颜色渐变模式总结
2016/11/18 HTML / CSS
全球在线商店:BerryLook
2019/04/14 全球购物
打架赔偿协议书范本
2014/10/26 职场文书
教师见习报告范文
2014/11/03 职场文书
联村联户简报
2015/07/21 职场文书
运动会广播稿300字
2015/08/19 职场文书
Python中的变量与常量
2021/11/11 Python
div与span之间的区别与使用介绍
2021/12/06 HTML / CSS
Pandas搭配lambda组合使用详解
2022/01/22 Python