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中死锁的形成示例及死锁情况的防止
Jun 14 Python
Python 实现取矩阵的部分列,保存为一个新的矩阵方法
Nov 14 Python
我就是这样学习Python中的列表
Jun 02 Python
Python面向对象之类的封装操作示例
Jun 08 Python
Django之提交表单与前后端交互的方法
Jul 19 Python
Python爬虫运用正则表达式的方法和优缺点
Aug 25 Python
浅谈Django+Gunicorn+Nginx部署之路
Sep 11 Python
python 实现快速生成连续、随机字母列表
Nov 28 Python
Python 实现Serial 与STM32J进行串口通讯
Dec 18 Python
详解有关PyCharm安装库失败的问题的解决方法
Feb 02 Python
Python利用Faiss库实现ANN近邻搜索的方法详解
Aug 03 Python
python爬取天气数据的实例详解
Nov 20 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中关于codeigniter的xmlrpc的类在进行数据交换时的类型问题
2011/07/03 PHP
php中getservbyport与getservbyname函数用法实例
2014/11/18 PHP
WordPress自定义时间显示格式
2015/03/27 PHP
PHP中ltrim()函数的用法与实例讲解
2019/03/28 PHP
Laravel开启跨域请求的方法
2019/10/13 PHP
ThinkPHP5与单元测试PHPUnit使用详解
2020/02/23 PHP
Javascript实例教程(19) 使用HoTMetal(1)
2006/12/23 Javascript
JS URL传中文参数引发的乱码问题
2009/09/02 Javascript
jQuery插件开发基础简单介绍
2013/01/07 Javascript
jquery通过a标签删除table中的一行的代码
2013/12/02 Javascript
JS实现至少包含字母、大小写数字、字符的密码等级的两种方法
2015/02/03 Javascript
HTML Table 空白单元格补全的简单实现
2016/10/13 Javascript
利用vue-router实现二级菜单内容转换
2016/11/30 Javascript
jQuery插件FusionCharts实现的MSBar2D图效果示例【附demo源码】
2017/03/24 jQuery
JS获取当前地理位置的方法
2017/10/25 Javascript
JS运动特效之同时运动实现方法分析
2018/01/24 Javascript
微信小程序实现折叠面板
2018/01/31 Javascript
vue-cli 引入jQuery,Bootstrap,popper的方法
2018/09/03 jQuery
使用python Django做网页
2013/11/04 Python
Linux环境下MySQL-python安装过程分享
2015/02/02 Python
python目录与文件名操作例子
2016/08/28 Python
Python Pandas分组聚合的实现方法
2019/07/02 Python
python实现代码统计程序
2019/09/19 Python
python+opencv实现车牌定位功能(实例代码)
2019/12/24 Python
Python socket聊天脚本代码实例
2020/01/02 Python
CSS中的字体大小设置属性总结
2016/05/24 HTML / CSS
高品质和独特的产品世界:Creations and Collections
2018/01/07 全球购物
行政助理求职自荐信
2013/10/26 职场文书
2014年情人节活动方案
2014/02/16 职场文书
搞笑婚礼主持词
2014/03/13 职场文书
2014年新生军训方案
2014/05/01 职场文书
师德师风个人总结
2015/02/06 职场文书
党支部审查意见
2015/06/02 职场文书
银行文明优质服务培训心得体会
2016/01/09 职场文书
Redis集群节点通信过程/原理流程分析
2022/03/18 Redis
Python使用socket去实现TCP客户端和TCP服务端
2022/04/12 Python