python网络编程之多线程同时接受和发送


Posted in Python onSeptember 03, 2019

本文实例为大家分享了python多线程同时接受和发的具体代码,供大家参考,具体内容如下

'''
模仿qq 同时可以发送信息和接受信息多线程
'''


from socket import *
from time import sleep
import threading

# 负责接收数据
def recvData():
  udpRecvSocket = socket(AF_INET,SOCK_DGRAM)
  # 默认使用8080端口
  myRecvPort = 8080
  bindAddr = ('',8080)
  #try为了防止端口被占用 如果被占用有一次的修改机会 反正系统就被崩溃
  try:
    #绑定地址
    udpRecvSocket.bind(bindAddr)
  #端口被占用后的修改
  except OSError:
    myRecvPort = int(input("请输入本机接受端口端口:"))
    bindAddr = ('',myRecvPort)
    udpRecvSocket.bind(bindAddr)
  #socket模块中自带的方法 用来获取用户名和ip地址
  myIpAddr = gethostbyname(getfqdn(gethostname()))
  #打印本机ip地址和所用的端口
  print("本机ip地址为[{}],接受数据的端口为[{}]".format(myIpAddr,myRecvPort))

  #防止受到的消息部分丢失而引发的异常问题
  while True:
    try:
      recvData = udpRecvSocket.recvfrom(1024) #最大字节数为1024
      #recvData = recvData.decode('GB2312')
      print('对方电脑输出的内容是:{}'.format(recvData))
    except error as e:
      print(e)


#负责发送数据
def sendData():
  #防止和上文同时输入产生风险 所以发送数据暂停10秒后再运行
  sleep(10)
  udpSendSocket = socket(AF_INET,SOCK_DGRAM)
  #用户输入接受方信息并存储在 sendAddr 中
  sendIpAddr = input('请输入接受方的ip地址:')
  sendPort = int(input('请输入接受方的端口:'))
  sendAddr = (sendIpAddr,sendPort)


  while True:
    sendData = input('请输入要发送的内容:')
    udpSendSocket.sendto(sendData.encode(),sendAddr)


#负责多线程
def main():
  #多线程同时运行两个方法
  t1 = threading.Thread(target=recvData)
  t2 = threading.Thread(target=sendData)
  t1.start()
  t2.start()
  t1.join()
  t2.jion()


if __name__ == '__main__':
  main()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
pycharm 使用心得(八)如何调用另一文件中的函数
Jun 06 Python
python开启多个子进程并行运行的方法
Apr 18 Python
Python实现将DOC文档转换为PDF的方法
Jul 25 Python
python批量制作雷达图的实现方法
Jul 26 Python
Python实现的读取电脑硬件信息功能示例
May 30 Python
python实现周期方波信号频谱图
Jul 21 Python
Python/ArcPy遍历指定目录中的MDB文件方法
Oct 27 Python
用python标准库difflib比较两份文件的异同详解
Nov 16 Python
Python理解递归的方法总结
Jan 28 Python
python程序中的线程操作 concurrent模块使用详解
Sep 23 Python
Python 线程池用法简单示例
Oct 02 Python
Python截图并保存的具体实例
Jan 14 Python
springboot配置文件抽离 git管理统 配置中心详解
Sep 02 #Python
python生成随机红包的实例写法
Sep 02 #Python
Django发送邮件功能实例详解
Sep 02 #Python
python读取Excel表格文件的方法
Sep 02 #Python
python将字典列表导出为Excel文件的方法
Sep 02 #Python
python数据处理之如何选取csv文件中某几行的数据
Sep 02 #Python
Python流程控制 while循环实现解析
Sep 02 #Python
You might like
用PHP和ACCESS写聊天室(二)
2006/10/09 PHP
PHP 冒泡排序算法的实现代码
2010/08/08 PHP
一篇有意思的技术文章php介绍篇
2010/10/26 PHP
php设计模式小结
2013/02/15 PHP
laravel model模型处理之修改查询或修改字段时的类型格式案例
2019/10/17 PHP
javascript编程起步(第二课)
2007/02/27 Javascript
javascript全局变量封装模块实现代码
2012/11/28 Javascript
JS返回上一页实例代码通过图片和按钮分别实现
2013/08/16 Javascript
Javascript学习笔记之 对象篇(一) : 对象的使用和属性
2014/06/24 Javascript
纯JavaScript实现的分页插件实例
2015/07/14 Javascript
微信支付如何实现内置浏览器的H5页面支付
2015/09/25 Javascript
浅谈js中startsWith 函数不能在任何浏览器兼容的问题
2017/03/01 Javascript
完美实现js选项卡切换效果(一)
2017/03/08 Javascript
JavaScript实现简单的四则运算计算器完整实例
2017/04/28 Javascript
js 公式编辑器 - 自定义匹配规则 - 带提示下拉框 - 动态获取光标像素坐标
2018/01/04 Javascript
Angular实现模版驱动表单的自定义校验功能(密码确认为例)
2018/05/17 Javascript
Node.js搭建WEB服务器的示例代码
2018/08/15 Javascript
vue-cli脚手架build目录下utils.js工具配置文件详解
2018/09/14 Javascript
angular.js实现列表orderby排序的方法
2018/10/02 Javascript
微信小程序日历/日期选择插件使用方法详解
2018/12/28 Javascript
jQuery cookie的公共方法封装和使用示例
2020/06/01 jQuery
es5 类与es6中class的区别小结
2020/11/09 Javascript
详解Python3中yield生成器的用法
2015/08/20 Python
Python使用win32com实现的模拟浏览器功能示例
2017/07/13 Python
Python 最大概率法进行汉语切分的方法
2018/12/14 Python
Python设计模式之原型模式实例详解
2019/01/18 Python
美国诺德斯特龙百货官网:Nordstrom
2016/08/23 全球购物
秘鲁购物网站:Linio秘鲁
2017/04/07 全球购物
牵手50台湾:专为黄金岁月的单身人士而设的交友网站
2021/02/18 全球购物
益模软件Java笔试题
2012/03/27 面试题
Linux的文件类型
2016/07/05 面试题
文案策划求职信
2014/04/14 职场文书
公司租房协议书
2014/10/14 职场文书
综合办公室岗位职责
2015/04/11 职场文书
惹女朋友生气检讨书
2015/05/06 职场文书
作文之亲情600字
2019/09/23 职场文书