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语言实现机器学习的K-近邻算法
Jun 11 Python
Python实现的多线程http压力测试代码
Feb 08 Python
python 获取指定文件夹下所有文件名称并写入列表的实例
Apr 23 Python
浅谈python中拼接路径os.path.join斜杠的问题
Oct 23 Python
Python Unittest根据不同测试环境跳过用例的方法
Dec 16 Python
python字符串替换第一个字符串的方法
Jun 26 Python
解决Python中pandas读取*.csv文件出现编码问题
Jul 12 Python
tensorflow2.0与tensorflow1.0的性能区别介绍
Feb 07 Python
jupyter notebook 调用环境中的Keras或者pytorch教程
Apr 14 Python
在python中使用pyspark读写Hive数据操作
Jun 06 Python
python json.dumps() json.dump()的区别详解
Jul 14 Python
PyTorch中的torch.cat简单介绍
Mar 17 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
15种PHP Encoder的比较
2007/03/06 PHP
Zend Studio for Eclipse的java.lang.NullPointerException错误的解决方法
2008/12/06 PHP
使用php语句将数据库*.sql文件导入数据库
2014/05/05 PHP
php使用function_exists判断函数可用的方法
2014/11/19 PHP
php进行ip地址掩码运算处理的方法
2016/07/11 PHP
javascript parseInt 大改造
2009/09/27 Javascript
Dojo 学习要点
2010/09/03 Javascript
深入理解JavaScript系列(15) 函数(Functions)
2012/04/12 Javascript
js实现的点击数量加一可操作数据库
2014/05/09 Javascript
基于jQuery实现的QQ表情插件
2015/08/25 Javascript
javascript实现保留两位小数的多种方法
2015/12/18 Javascript
JS实现禁止鼠标右键的功能
2016/10/15 Javascript
JavaScript在form表单中使用button按钮实现submit提交方法
2017/01/23 Javascript
Angular开发实践之服务端渲染
2018/03/29 Javascript
layui实现table加载的示例代码
2018/08/14 Javascript
Angular使用ControlValueAccessor创建自定义表单控件
2019/03/08 Javascript
解决vue项目获取dom元素宽高总是不准确问题
2020/07/29 Javascript
JavaScript封装单向链表的示例代码
2020/09/17 Javascript
[01:59]深扒TI7聊天轮盘语音出处 1
2017/05/11 DOTA
解决python删除文件的权限错误问题
2018/04/24 Python
python使用suds调用webservice接口的方法
2019/01/03 Python
keras 多gpu并行运行案例
2020/06/10 Python
解决redis与Python交互取出来的是bytes类型的问题
2020/07/16 Python
Python 获取异常(Exception)信息的几种方法
2020/12/29 Python
物业管理员岗位职责范文
2013/11/25 职场文书
车工岗位职责
2013/11/26 职场文书
中专生自我鉴定书范文
2013/12/28 职场文书
结婚喜宴家长答谢词
2014/01/15 职场文书
中学家长会邀请函
2014/02/03 职场文书
工商管理专业大学生职业生涯规划范文
2014/03/09 职场文书
党员岗位承诺口号大全
2014/03/28 职场文书
关于爱国的标语
2014/06/24 职场文书
小学生运动会报道稿
2014/09/12 职场文书
党支部三会一课计划
2014/09/24 职场文书
医者仁心观后感
2015/06/17 职场文书
Linux中文件的基本属性介绍
2022/06/01 Servers