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利用datetime模块计算时间差
Aug 04 Python
简单总结Python中序列与字典的相同和不同之处
Jan 19 Python
Linux下python3.7.0安装教程
Jul 30 Python
对python3中, print横向输出的方法详解
Jan 28 Python
详解python多线程之间的同步(一)
Apr 03 Python
python基于递归解决背包问题详解
Jul 03 Python
python隐藏类中属性的3种实现方法
Dec 19 Python
Python socket聊天脚本代码实例
Jan 02 Python
Python函数生成器原理及使用详解
Mar 12 Python
tensorflow实现从.ckpt文件中读取任意变量
May 26 Python
用Python 爬取猫眼电影数据分析《无名之辈》
Jul 24 Python
Python 使用 Frame tkraise() 方法在 Tkinter 应用程序中的Frame之间切换
Apr 24 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数组函数
2008/08/18 PHP
php 生成随机验证码图片代码
2010/02/08 PHP
PHP CURL模拟登录新浪微博抓取页面内容 基于EaglePHP框架开发
2012/01/16 PHP
解决FastCGI 进程超过了配置的活动超时时限的问题
2013/07/03 PHP
PHP实现抓取迅雷VIP账号的方法
2015/07/30 PHP
php事务回滚简单实现方法示例
2017/03/28 PHP
php生成毫秒时间戳的实例讲解
2017/09/22 PHP
PHP设计模式之状态模式定义与用法详解
2018/04/02 PHP
Juqery Html(),append()等方法的Bug解决方法
2010/12/13 Javascript
深入理解Javascript闭包 新手版
2010/12/28 Javascript
将光标定位于输入框最右侧实现代码
2012/12/04 Javascript
javascript实现的右下角弹窗实例
2015/04/24 Javascript
jQuery实现鼠标经过事件的延时处理效果
2020/08/20 Javascript
全面解析Angular中$Apply()及$Digest()的区别
2016/08/04 Javascript
js+html制作简单日历的方法
2017/06/27 Javascript
微信小程序下拉菜单效果的实例代码
2019/05/14 Javascript
vue滚动固定顶部及修改样式的实例代码
2019/05/30 Javascript
vue实现pdf文档在线预览功能
2019/11/26 Javascript
jQuery实现移动端笔触canvas电子签名
2020/05/21 jQuery
Vue项目接入Paypal实现示例详解
2020/06/04 Javascript
python实现百度关键词排名查询
2014/03/30 Python
Python连接PostgreSQL数据库的方法
2016/11/28 Python
python 调用HBase的简单实例
2016/12/18 Python
selenium python浏览器多窗口处理代码示例
2018/01/15 Python
Python 模拟动态产生字母验证码图片功能
2019/12/24 Python
使用遗传算法求二元函数的最小值
2020/02/11 Python
德国PC硬件网站:CASEKING
2016/10/20 全球购物
阿里健康官方海外旗舰店:阿里健康国际自营
2017/11/24 全球购物
PHP如何调用MYSQL存储过程
2014/05/30 面试题
精彩的大学生自我评价
2013/11/17 职场文书
师范生自我鉴定
2014/03/20 职场文书
学校读书活动总结
2014/06/30 职场文书
医学专业大学生求职信
2014/07/12 职场文书
小学公民道德宣传日活动总结
2015/03/23 职场文书
2016基督教会圣诞节开幕词
2016/03/04 职场文书
Java设计模式中的命令模式
2022/04/28 Java/Android