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搭建简易服务器分析与实现
Dec 15 Python
python操作MySQL数据库具体方法
Oct 28 Python
python基于queue和threading实现多线程下载实例
Oct 08 Python
利用python求解物理学中的双弹簧质能系统详解
Sep 29 Python
python最长回文串算法
Jun 04 Python
Python rstrip()方法实例详解
Nov 11 Python
Python图像处理之图像的缩放、旋转与翻转实现方法示例
Jan 04 Python
查看python安装路径及pip安装的包列表及路径
Apr 03 Python
python实现名片管理器的示例代码
Dec 17 Python
python异常处理、自定义异常、断言原理与用法分析
Mar 23 Python
浅析Python 序列化与反序列化
Aug 05 Python
五分钟学会怎么用Pygame做一个简单的贪吃蛇
Jan 06 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 过滤英文标点符号及过滤中文标点符号代码
2014/06/12 PHP
用js+xml自动生成表格的东西
2006/12/21 Javascript
从Ajax到JQuery Ajax学习
2007/02/14 Javascript
jquery scrollTop方法根据滚动像素显示隐藏顶部导航条
2013/05/27 Javascript
JS 如何获取radio选中后的值及不选择取radio的值
2013/10/28 Javascript
javascript中动态加载js文件多种解决办法总结
2013/11/15 Javascript
jquery 实现input输入什么div图层显示什么
2014/06/15 Javascript
JavaScript中的Promise使用详解
2015/06/24 Javascript
jQuery中的Deferred和promise 的区别
2016/04/03 Javascript
select隐藏选中值对应的id,显示其它id的简单实现方法
2016/08/25 Javascript
详解XMLHttpRequest(二)响应属性、二进制数据、监测上传下载进度
2016/09/14 Javascript
Vue2.0父子组件传递函数的教程详解
2017/10/16 Javascript
对Vue.js之事件的绑定(v-on: 或者 @ )详解
2018/09/15 Javascript
解决angularjs service中依赖注入$scope报错的问题
2018/10/02 Javascript
js实现动态增加文件域表单功能
2018/10/22 Javascript
react脚手架如何配置less和ant按需加载的方法步骤
2018/11/28 Javascript
jQuery实现的模仿雨滴下落动画效果
2018/12/11 jQuery
vue项目中微信登录的实现操作
2020/09/08 Javascript
前端性能优化建议
2020/09/17 Javascript
微信小程序自定义yPicker组件实现省市区三级联动功能
2020/10/29 Javascript
[05:06]DOTA2-DPC中国联赛 正赛 VG vs Magma选手采访
2021/03/11 DOTA
python发送邮件示例(支持中文邮件标题)
2014/02/16 Python
Python Django框架单元测试之文件上传测试示例
2019/05/17 Python
python实现共轭梯度法
2019/07/03 Python
python如何使用Redis构建分布式锁
2020/01/16 Python
CSS3中currentColor关键字的妙用
2016/02/27 HTML / CSS
美国用餐电影院:Alamo Drafthouse Cinema
2020/01/23 全球购物
计算机个人求职信范例
2014/01/24 职场文书
母亲节感恩活动记录
2014/03/16 职场文书
绿色学校实施方案
2014/03/31 职场文书
产假请假条
2014/04/10 职场文书
公司承诺书范文
2014/05/19 职场文书
颐和园的导游词
2015/01/30 职场文书
导游词书写之黄山
2019/08/06 职场文书
python使用PySimpleGUI设置进度条及控件使用
2021/06/10 Python
Java异常处理try catch的基本用法
2021/12/06 Java/Android