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操作MongoDB数据库PyMongo库使用方法
Apr 27 Python
Python2和Python3之间的str处理方式导致乱码的讲解
Jan 03 Python
情人节快乐! python绘制漂亮玫瑰
Aug 18 Python
详解利用python+opencv识别图片中的圆形(霍夫变换)
Jul 01 Python
解决Python中pandas读取*.csv文件出现编码问题
Jul 12 Python
Django在admin后台集成TinyMCE富文本编辑器的例子
Aug 09 Python
使用python批量转换文件编码为UTF-8的实现
Apr 03 Python
opencv-python的RGB与BGR互转方式
Jun 02 Python
Pycharm 2020.1 版配置优化的详细教程
Aug 07 Python
Django创建一个后台的基本步骤记录
Oct 02 Python
Python利用matplotlib绘制散点图的新手教程
Nov 05 Python
学会Python数据可视化必须尝试这7个库
Jun 16 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实现图片简单上传
2006/10/09 PHP
百万级别知乎用户数据抓取与分析之PHP开发
2015/09/28 PHP
PHP 计算至少是其他数字两倍的最大数的实现代码
2020/05/26 PHP
我也种棵OO树JXTree[js+css+xml]
2007/04/02 Javascript
基于Unit PNG Fix.js有时候在ie6下不正常的解决办法
2013/06/26 Javascript
javascript模块化是什么及其优缺点介绍
2013/09/02 Javascript
深入理解javascript中的立即执行函数(function(){…})()
2014/06/12 Javascript
jQuery $.each遍历对象、数组用法实例
2015/04/16 Javascript
在WordPress中加入Google搜索功能的简单步骤讲解
2016/01/04 Javascript
jQuery UI插件实现百度提词器效果
2016/11/21 Javascript
深入浅出理解JavaScript高级定时器原理与用法
2018/08/02 Javascript
vue+webpack中配置ESLint
2018/11/07 Javascript
vant自定义二级菜单操作
2020/11/02 Javascript
[02:44]完美大师赛主赛事淘汰赛第二日观众采访
2017/11/24 DOTA
python函数缺省值与引用学习笔记分享
2013/02/10 Python
python中的yield使用方法
2014/02/11 Python
简单理解Python中基于生成器的状态机
2015/04/13 Python
python删除列表中重复记录的方法
2015/04/28 Python
使用python绘制常用的图表
2016/08/27 Python
实现python版本的按任意键继续/退出
2016/09/26 Python
python对文件目录的操作方法实例总结
2019/06/24 Python
python实现音乐播放器 python实现花框音乐盒子
2020/02/25 Python
Python 读取xml数据,cv2裁剪图片实例
2020/03/10 Python
解决Python3.8运行tornado项目报NotImplementedError错误
2020/09/02 Python
python FTP编程基础入门
2021/02/27 Python
基于HTML5新特性Mutation Observer实现编辑器的撤销和回退操作
2016/01/11 HTML / CSS
Smashbox官网:美国知名彩妆品牌
2017/01/05 全球购物
十八届三中全会学习方案
2014/02/16 职场文书
小学数学教学经验交流材料
2014/05/22 职场文书
科学发展观演讲稿
2014/09/11 职场文书
2014年办公室文员工作总结
2014/11/12 职场文书
2014年卫生保健工作总结
2014/12/08 职场文书
复试通知单模板
2015/04/24 职场文书
详解MySQL连接挂死的原因
2021/05/18 MySQL
Mysql数据库按时间点恢复实战记录
2021/06/30 MySQL
十大动画制作软件,Adobe产品上榜两款,第一是行业标准软件
2022/03/18 杂记