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在Windows下安装setuptools(easy_install工具)步骤详解
Jul 01 Python
简单谈谈Python中的反转字符串问题
Oct 24 Python
Python深入06——python的内存管理详解
Dec 07 Python
python3 面向对象__类的内置属性与方法的实例代码
Nov 09 Python
对Python3之进程池与回调函数的实例详解
Jan 22 Python
对python 调用类属性的方法详解
Jul 02 Python
django中的图片验证码功能
Sep 18 Python
Python进程的通信Queue、Pipe实例分析
Mar 30 Python
python 在右键菜单中加入复制目标文件的有效存放路径(单斜杠或者双反斜杠)
Apr 08 Python
Python-jenkins模块之folder相关操作介绍
May 12 Python
Pytorch使用PIL和Numpy将单张图片转为Pytorch张量方式
May 25 Python
Python编写车票订购系统 Python实现快递收费系统
Aug 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
cache_lite试用
2007/02/14 PHP
PHP开启gzip页面压缩实例代码
2010/03/11 PHP
php smarty 二级分类代码和模版循环例子
2011/06/16 PHP
PHP清除缓存的几种方法总结
2017/09/12 PHP
PHP的PDO错误与错误处理
2019/01/27 PHP
PHP 观察者模式深入理解与应用分析
2019/09/25 PHP
动态创建的表格单元格中的事件实现代码
2008/12/30 Javascript
javascript中最常用的继承模式 组合继承
2010/08/12 Javascript
收集的10个免费的jQuery相册
2011/02/26 Javascript
jQuery之自动完成组件的深入解析
2013/06/19 Javascript
使用javascript实现页面定时跳转总结篇
2013/09/21 Javascript
调用jQuery滑出效果时闪烁的解决方法
2014/03/27 Javascript
checkbox选中与未选中判断示例
2014/08/04 Javascript
javascript实现获取浏览器版本、操作系统类型
2015/01/29 Javascript
小程序开发实战:实现九宫格界面的导航的代码实现
2017/01/19 Javascript
javascript防篡改对象实例详解
2017/04/10 Javascript
Webpack打包css后z-index被重新计算的解决方法
2017/06/18 Javascript
ES6正则表达式扩展笔记
2017/07/25 Javascript
JavaScript 数组去重并统计重复元素出现的次数实例
2017/12/14 Javascript
js正则相关知识点专题
2018/05/10 Javascript
vue的全局变量和全局拦截请求器的示例代码
2018/09/13 Javascript
微信小程序后端实现授权登录
2020/02/24 Javascript
python冒泡排序简单实现方法
2015/07/09 Python
Python输出各行命令详解
2018/02/01 Python
Django中Forms的使用代码解析
2018/02/10 Python
Python第三方库h5py_读取mat文件并显示值的方法
2019/02/08 Python
python3.x提取中文的正则表达式示例代码
2019/07/23 Python
Pytorch保存模型用于测试和用于继续训练的区别详解
2020/01/10 Python
Python tkinter和exe打包的方法
2020/02/05 Python
Python3.7 读取音频根据文件名生成脚本的代码
2020/04/07 Python
CSS3的first-child选择器实战攻略
2016/04/28 HTML / CSS
8和9的加减法教学反思
2014/05/01 职场文书
劳动争议仲裁代理词
2015/05/25 职场文书
房屋质量投诉书
2015/07/02 职场文书
建筑工程挂靠协议书
2016/03/23 职场文书
Go语言的协程上下文的几个方法和用法
2022/04/11 Golang