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演示数型数据结构的教程
Apr 03 Python
Python中几种操作字符串的方法的介绍
Apr 09 Python
简介二分查找算法与相关的Python实现示例
Aug 26 Python
Python装饰器实现几类验证功能做法实例
May 18 Python
django 按时间范围查询数据库实例代码
Feb 11 Python
Python数据结构之图的应用示例
May 11 Python
Python实现的统计文章单词次数功能示例
Jul 08 Python
基于Python实现ComicReaper漫画自动爬取脚本过程解析
Nov 11 Python
python3爬取torrent种子链接实例
Jan 16 Python
opencv+python实现均值滤波
Feb 19 Python
解决启动django,浏览器显示“服务器拒绝访问”的问题
May 13 Python
python3实现将json对象存入Redis以及数据的导入导出
Jul 16 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中常用编辑器推荐
2007/01/02 PHP
PHP+iFrame实现页面无需刷新的异步文件上传
2014/09/16 PHP
Symfony2中被遗弃的getRequest()方法分析
2016/03/17 PHP
php字符串的替换,分割和连接方法
2016/05/23 PHP
总结PHP中数值计算的注意事项
2016/08/14 PHP
实例讲解YII2中多表关联的使用方法
2017/07/21 PHP
js获取提交的字符串的字节数
2009/02/09 Javascript
Jquery 表单取值赋值的一些基本操作
2009/10/11 Javascript
判断用户是否在线的代码
2011/03/05 Javascript
JS按字节截取字符长度实例
2013/11/20 Javascript
javascript生成json数据简单示例分享
2014/02/14 Javascript
AngularJS ng-bind 指令简单实现
2016/07/30 Javascript
jQuery实现两列等高并自适应高度
2016/12/22 Javascript
微信小程序之拖拽排序(代码分享)
2017/01/21 Javascript
jQuery元素选择器实例代码
2017/02/06 Javascript
微信小程序 弹幕功能简单实例
2017/02/14 Javascript
jQuery复合事件用法示例
2017/06/10 jQuery
使用socket.io制做简易WEB聊天室
2018/01/02 Javascript
python批量读取txt文件为DataFrame的方法
2018/04/03 Python
python SMTP实现发送带附件电子邮件
2018/05/22 Python
Django中数据库的数据关系:一对一,一对多,多对多
2018/10/21 Python
基于python历史天气采集的分析
2019/02/14 Python
英国著名音像制品和图书游戏购物网站:Zavvi
2016/08/04 全球购物
丝芙兰中国官方商城:SEPHORA中国
2018/01/10 全球购物
Java程序员综合测试题
2014/04/25 面试题
大学生活动策划方案
2014/02/10 职场文书
自动一体化专业求职信
2014/03/15 职场文书
幼儿园新年寄语
2014/04/03 职场文书
《观舞记》教学反思
2014/04/16 职场文书
教师民族团结演讲稿
2014/08/27 职场文书
试用期自我评价怎么写
2015/03/10 职场文书
小人国观后感
2015/06/11 职场文书
人民的好儿女观后感
2015/06/18 职场文书
运动会入场词
2015/07/18 职场文书
Navicat for MySQL的使用教程详解
2021/05/27 MySQL
教你用Java在个人电脑上实现微信扫码支付
2021/06/13 Java/Android