python使用多线程编写tcp客户端程序


Posted in Python onSeptember 02, 2019

今天在网上找了半天,发现很多关于此题目的程序都只能接收数据,所以随便找了个程序研究了一下,然后做出一些修改

代码如下:

from socket import *
import threading
tcp_socket = socket(AF_INET, SOCK_STREAM)
tcp_socket.connect(('192.168.1.102', 8080))
true = True


def rece_msg(tcp_socket):
 global true
 while true:
  recv_msg = tcp_socket.recv(1024).decode("utf8")
  if recv_msg == "exit":
   true = False
  print('接收到的信息为:%s' % recv_msg)


def send_msg(tcp_socket):
 global true
 while true:
  send_msg = input('请输入要发送的内容')
  tcp_socket.send(send_msg.encode('utf-8'))
  if send_msg == "exit":
   true = False


def main():
 while True:
  print('*'*50)
  print('1 发送消息\n2 接收消息')
  option = int(input('请选择操作内容'))
  print('*'*50)
  if option == 1:
   threading.Thread(target=send_msg, args=(tcp_socket,)).start()
  elif option == 2:
   threading.Thread(target=rece_msg, args=(tcp_socket,)).start()
  else:
   print('输入有误')
  break


if __name__ == '__main__':
 main()

该代码只能实现要么一直发送,要么一直接收

运行如图

发送数据时截图

 python使用多线程编写tcp客户端程序

python使用多线程编写tcp客户端程序

接收数据时截图

 python使用多线程编写tcp客户端程序

python使用多线程编写tcp客户端程序

为解决只能单方发送和接收问题,现将代码修改如下

from socket import *
import threading
tcp_socket = socket(AF_INET, SOCK_STREAM)
tcp_socket.connect(('192.168.1.102', 8080))
true = True


def rece_msg(tcp_socket):
 global true
 while true:
  recv_msg = tcp_socket.recv(1024).decode("utf8")
  if recv_msg == "exit":
   true = False
  print('接收到的信息为:%s\n' % recv_msg)


def send_msg(tcp_socket):
 global true
 while true:
  send_msg = input('请输入要发送的内容\n')
  tcp_socket.send(send_msg.encode('utf-8'))
  if send_msg == "exit":
   true = False


threading.Thread(target=send_msg, args=(tcp_socket,)).start()
threading.Thread(target=rece_msg, args=(tcp_socket,)).start()

运行结果

python使用多线程编写tcp客户端程序

python使用多线程编写tcp客户端程序

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python 从远程服务器下载日志文件的程序
Feb 10 Python
Python Web框架Pylons中使用MongoDB的例子
Dec 03 Python
python解析发往本机的数据包示例 (解析数据包)
Jan 16 Python
详解Python发送邮件实例
Jan 10 Python
R vs. Python 数据分析中谁与争锋?
Oct 18 Python
在Python 2.7即将停止支持时,我们为你带来了一份python 3.x迁移指南
Jan 30 Python
python移位运算的实现
Jul 15 Python
Python Celery多队列配置代码实例
Nov 22 Python
Python 中的函数装饰器和闭包详解
Feb 06 Python
Python合并多张图片成PDF
Jun 09 Python
你需要掌握的20个Python常用技巧
Feb 28 Python
Python实现猜拳与猜数字游戏的方法详解
Apr 06 Python
使用python实现离散时间傅里叶变换的方法
Sep 02 #Python
详解Python图像处理库Pillow常用使用方法
Sep 02 #Python
Django使用中间件解决前后端同源策略问题
Sep 02 #Python
python elasticsearch环境搭建详解
Sep 02 #Python
关于pymysql模块的使用以及代码详解
Sep 01 #Python
使用Python将字符串转换为格式化的日期时间字符串
Sep 01 #Python
Python 使用多属性来进行排序
Sep 01 #Python
You might like
基于PHP常用函数的用法详解
2013/05/10 PHP
PHP SPL标准库中的常用函数介绍
2015/05/11 PHP
php中ob函数缓冲机制深入理解
2015/08/03 PHP
在PHP语言中使用JSON和将json还原成数组的方法
2016/07/19 PHP
PHP编程中的Session阻塞问题与解决方法分析
2017/08/07 PHP
js日历功能对象
2012/01/12 Javascript
jQuery滚动加载图片效果的实现
2013/03/06 Javascript
js 控制页面跳转的5种方法
2013/09/09 Javascript
js实现jquery的offset()方法实例
2015/01/10 Javascript
jquery左右全屏大尺寸多图滑动效果代码分享
2015/08/28 Javascript
jQuery实现的简单分页示例
2016/06/01 Javascript
微信和qq时间格式模板实例详解
2016/10/21 Javascript
jQuery实现的分页功能示例
2017/01/22 Javascript
详解javascript中对数据格式化的思考
2017/01/23 Javascript
JavaScript基础心法 深浅拷贝(浅拷贝和深拷贝)
2018/03/05 Javascript
用图片替换checkbox原始样式并实现同样的功能
2018/11/15 Javascript
jquery的$().each和$.each的区别
2019/01/18 jQuery
vue学习笔记五:在vue项目里面使用引入公共方法详解
2019/04/04 Javascript
js实现继承的方法及优缺点总结
2019/05/08 Javascript
JS中超越现实的匿名函数用法实例分析
2019/06/21 Javascript
Angular 多级路由实现登录页面跳转(小白教程)
2019/11/19 Javascript
es5 类与es6中class的区别小结
2020/11/09 Javascript
Python网络爬虫中的同步与异步示例详解
2018/02/03 Python
pytorch 改变tensor尺寸的实现
2020/01/03 Python
Pytorch 高效使用GPU的操作
2020/06/27 Python
python爬虫构建代理ip池抓取数据库的示例代码
2020/09/22 Python
python3 googletrans超时报错问题及翻译工具优化方案 附源码
2020/12/23 Python
超30万乐谱下载:Musicnotes.com
2016/09/24 全球购物
英国时尚女装购物网站:Missguided
2018/08/23 全球购物
Hawes & Curtis澳大利亚官网:英国经典服饰品牌
2018/10/29 全球购物
求职自荐信范文格式
2013/11/29 职场文书
小区文明倡议书
2014/05/16 职场文书
党支部书记四风问题整改措施
2014/09/24 职场文书
代理词怎么写
2015/05/25 职场文书
Pandas 数据编码的十种方法
2022/04/20 Python
pd.DataFrame中的几种索引变换的实现
2022/06/16 Python