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中的高级数据结构详解
Mar 27 Python
Python三级菜单的实例
Sep 13 Python
python生成1行四列全2矩阵的方法
Aug 04 Python
TensorFlow实现指数衰减学习率的方法
Feb 05 Python
python模式 工厂模式原理及实例详解
Feb 11 Python
python对Excel的读取的示例代码
Feb 14 Python
Python matplotlib画图时图例说明(legend)放到图像外侧详解
May 16 Python
pycharm 实现本地写代码,服务器运行的操作
Jun 08 Python
Python 实现简单的客户端认证
Jul 29 Python
python获取淘宝服务器时间的代码示例
Apr 22 Python
python入门学习关于for else的特殊特性讲解
Nov 20 Python
Python开发五子棋小游戏
May 02 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与C#的值类型指向区别的详解
2013/05/21 PHP
php实现保存submit内容之后禁止刷新
2014/03/19 PHP
php实现压缩多个CSS与JS文件的方法
2014/11/11 PHP
php中base_convert()进制数字转换函数实例
2014/11/20 PHP
thinkPHP模板中函数的使用方法示例
2016/11/30 PHP
JavaScript传递变量: 值传递?引用传递?
2011/02/22 Javascript
dojo随手记 gird组件引用
2011/02/24 Javascript
jquery事件机制扩展插件 jquery鼠标右键事件
2011/12/21 Javascript
javascript中的self和this用法小结
2014/02/08 Javascript
Node.js编码规范
2014/07/14 Javascript
推荐9款炫酷的基于jquery的页面特效
2014/12/07 Javascript
jQuery检测返回值的数据类型
2015/07/13 Javascript
js实现页面a向页面b传参的方法
2016/05/29 Javascript
js实现把图片的绝对路径转为base64字符串、blob对象再上传
2016/12/29 Javascript
vue 使用Jade模板写html,stylus写css的方法
2018/02/23 Javascript
vue router 配置路由的方法
2018/07/26 Javascript
详解SPA中前端路由基本原理与实现方式
2018/09/12 Javascript
CKeditor4 字体颜色功能配置方法教程
2019/06/26 Javascript
Node.js操作MongoDB数据库实例分析
2020/01/19 Javascript
vue中移动端调取本地的复制的文本方式
2020/07/18 Javascript
原生js生成图片验证码
2020/10/11 Javascript
ES6 十大特性简介
2020/12/09 Javascript
Python实现批量修改图片格式和大小的方法【opencv库与PIL库】
2018/12/03 Python
Django 多表关联 存储 使用方法详解 ManyToManyField save
2019/08/09 Python
解决Jupyter因卸载重装导致的问题修复
2020/04/10 Python
Python批量处理csv并保存过程解析
2020/05/16 Python
Python爬虫模拟登陆哔哩哔哩(bilibili)并突破点选验证码功能
2020/12/21 Python
Python学习之time模块的基本使用
2021/01/17 Python
ziaja齐叶雅官方海外旗舰店:来自波兰的天然护肤品牌
2017/01/02 全球购物
Move Free官方海外旗舰店:美国骨关节健康专业品牌
2017/12/06 全球购物
活动策划邀请函
2014/02/06 职场文书
挂靠协议书范本
2014/04/22 职场文书
分公司任命书
2014/06/06 职场文书
西柏坡导游词
2015/02/05 职场文书
2016年法制宣传月活动总结
2016/04/01 职场文书
《雪域豹影》读后感:父爱的伟大
2019/12/23 职场文书