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 相关文章推荐
Python3通过Luhn算法快速验证信用卡卡号的方法
May 14 Python
Python实现从URL地址提取文件名的方法
May 15 Python
浅谈python新手中常见的疑惑及解答
Jun 14 Python
Python中functools模块函数解析
Mar 12 Python
Python实现两款计算器功能示例
Dec 19 Python
python 获取文件下所有文件或目录os.walk()的实例
Apr 23 Python
python smtplib发送带附件邮件小程序
May 22 Python
python通过ffmgep从视频中抽帧的方法
Dec 05 Python
python set内置函数的具体使用
Jul 02 Python
python多线程并发及测试框架案例
Oct 15 Python
Python多线程获取返回值代码实例
Feb 17 Python
Python Django框架介绍之模板标签及模板的继承
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
探讨PHP JSON中文乱码的解决方法详解
2013/06/06 PHP
PHP中使用TCPDF生成PDF文档实例
2014/07/01 PHP
PHP.ini安全配置检测工具pcc简单介绍
2015/07/02 PHP
ThinkPHP3.2框架使用addAll()批量插入数据的方法
2017/03/16 PHP
基于PHP+Mysql简单实现了图书购物车系统的实例详解
2020/08/06 PHP
Gird事件机制初级读本
2007/03/10 Javascript
基于jquery tab切换(防止页面刷新)
2012/05/23 Javascript
JQuery 图片的展开和伸缩实例讲解
2013/04/18 Javascript
jQuery实现简单二级下拉菜单
2015/04/12 Javascript
JavaScript代码轻松实现网页内容禁止复制(代码简单)
2015/10/23 Javascript
jQuery中text() val()和html()的区别实例详解
2016/06/28 Javascript
AngularJS基础 ng-class-odd 指令示例
2016/08/01 Javascript
vue.js组件之间传递数据的方法
2017/07/10 Javascript
[js高手之路]原型式继承与寄生式继承详解
2017/08/28 Javascript
vue组件发布到npm简单步骤
2017/11/30 Javascript
浅谈webpack和webpack-cli模块源码分析
2020/01/19 Javascript
vue2.0实现列表数据增加和删除
2020/06/17 Javascript
[00:30]明星选手化身超级英雄!2018DOTA2亚洲邀请赛全明星赛来临!
2018/04/06 DOTA
Python2中的raw_input() 与 input()
2015/06/12 Python
python基础教程之分支、循环简单用法
2016/06/16 Python
Python中矩阵库Numpy基本操作详解
2017/11/21 Python
python 拷贝特定后缀名文件,并保留原始目录结构的实例
2018/04/27 Python
Django框架之登录后自定义跳转页面的实现方法
2019/07/18 Python
Pycharm 2020最新永久激活码(附最新激活码和插件)
2020/09/17 Python
英国50岁以上人群的交友网站:Ourtime
2018/03/28 全球购物
Quiksilver美国官网:始于1969年的优质冲浪服和滑雪板外套
2020/04/20 全球购物
自考毕业生自我鉴定
2013/11/04 职场文书
航空大学应届生求职信
2013/11/10 职场文书
高中生学习生活的自我评价
2013/11/27 职场文书
优秀共产党员先进事迹材料
2014/05/06 职场文书
活动总结怎么写啊
2014/05/07 职场文书
职员竞岗演讲稿
2014/05/14 职场文书
中学生纪念九一八事变演讲稿
2014/09/14 职场文书
机关作风建设自查报告
2014/10/22 职场文书
学校通报表扬范文
2015/05/04 职场文书
go web 预防跨站脚本的实现方式
2021/06/11 Golang