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 相关文章推荐
Python爬取国外天气预报网站的方法
Jul 10 Python
python抓取并保存html页面时乱码问题的解决方法
Jul 01 Python
python3爬取各类天气信息
Feb 24 Python
详解如何用django实现redirect的几种方法总结
Nov 22 Python
在Pandas中处理NaN值的方法
Jun 25 Python
Python实现基于socket的udp传输与接收功能详解
Nov 15 Python
Python中格式化字符串的四种实现
May 26 Python
python可以用哪些数据库
Jun 22 Python
如何在python中实现线性回归
Aug 10 Python
Python 处理日期时间的Arrow库使用
Aug 18 Python
Python urllib库如何添加headers过程解析
Oct 05 Python
pytorch Dropout过拟合的操作
May 27 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
实现dedecms全站URL静态化改造的代码
2007/03/29 PHP
php数组函数序列之array_combine() - 数组合并函数使用说明
2011/10/29 PHP
php计算十二星座的函数代码
2012/08/21 PHP
php生成mysql的数据字典
2016/07/07 PHP
checkbox 多选框 联动实现代码
2008/10/22 Javascript
JQuery autocomplete 使用手册
2010/04/01 Javascript
查看源码的工具 学习jQuery源码不错的工具
2011/12/26 Javascript
Js为表单动态添加节点内容的方法
2015/02/10 Javascript
jQuery搜索子元素的方法
2015/02/10 Javascript
$.extend 的一个小问题
2015/06/18 Javascript
JavaScript记录光标在编辑器中位置的实现方法
2016/04/22 Javascript
基于jquery实现三级下拉菜单
2016/05/10 Javascript
Javarscript中模块(module)、加载(load)与捆绑(bundle)详解
2017/05/28 Javascript
php 解压zip压缩包内容到指定目录的实例
2018/01/23 Javascript
vue自定义filters过滤器
2018/04/26 Javascript
微信小程序实现图片滚动效果示例
2018/12/05 Javascript
angular4中引入echarts的方法示例
2019/01/29 Javascript
详解Vue 匿名、具名和作用域插槽的使用方法
2019/04/22 Javascript
详解VUE Element-UI多级菜单动态渲染的组件
2019/04/25 Javascript
vue限制输入框只能输入8位整数和2位小数的代码
2019/11/06 Javascript
微信小程序scroll-view实现滚动到锚点左侧导航栏点餐功能(点击种类,滚动到锚点)
2020/06/11 Javascript
Python使用scrapy采集数据时为每个请求随机分配user-agent的方法
2015/04/08 Python
python获取从命令行输入数字的方法
2015/04/29 Python
在python3.5中使用OpenCV的实例讲解
2018/04/02 Python
Python实现使用request模块下载图片demo示例
2019/05/24 Python
基于python实现自动化办公学习笔记(CSV、word、Excel、PPT)
2019/08/06 Python
python3光学字符识别模块tesserocr与pytesseract的使用详解
2020/02/26 Python
python实现扫雷游戏的示例
2020/10/20 Python
python中strip(),lstrip(),rstrip()函数的使用讲解
2020/11/17 Python
光电信息专业应届生求职信
2013/10/07 职场文书
会计学自我鉴定
2014/02/06 职场文书
优秀毕业生事迹材料
2014/02/12 职场文书
商务英语广告词大全
2014/03/18 职场文书
公共场所禁烟倡议书
2014/08/30 职场文书
12.4法制宣传日标语
2014/10/08 职场文书
用几道面试题来看JavaScript执行机制
2021/04/30 Javascript