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写的一个定时重跑获取数据库数据
Dec 28 Python
Python利用Beautiful Soup模块修改内容方法示例
Mar 27 Python
Python使用matplotlib实现基础绘图功能示例
Jul 03 Python
python logging重复记录日志问题的解决方法
Jul 12 Python
Pycharm无法显示动态图片的解决方法
Oct 28 Python
python pcm音频添加头转成Wav格式文件的方法
Jan 09 Python
pyqt5利用pyqtDesigner实现登录界面
Mar 28 Python
Django 表单模型选择框如何使用分组
May 16 Python
通过selenium抓取某东的TT购买记录并分析趋势过程解析
Aug 15 Python
python3实现弹弹球小游戏
Nov 25 Python
关于初始种子自动选取的区域生长实例(python+opencv)
Jan 16 Python
Python 炫技操作之合并字典的七种方法
Apr 10 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
PHP5 安装方法
2006/10/09 PHP
php 301转向实现代码
2008/09/18 PHP
PHP CURL模拟GET及POST函数代码
2010/04/25 PHP
PHP中file_exists与is_file,is_dir的区别介绍
2012/09/12 PHP
php+mysql不用递归实现的无限级分类实例(非递归)
2014/07/08 PHP
JavaScript TO HTML 转换
2006/06/26 Javascript
ASP中用Join和Array,可以加快字符连接速度的代码
2007/08/22 Javascript
jquery清空textarea等输入框实现代码
2013/04/22 Javascript
动态添加option及createElement使用示例
2014/01/26 Javascript
JavaScript按位运算符的应用简析
2014/02/04 Javascript
有效提高JavaScript执行效率的几点知识
2015/01/31 Javascript
轻量级网页遮罩层jQuery插件用法实例
2015/07/31 Javascript
arcgis for js栅格图层叠加(Raster Layer)问题
2017/11/22 Javascript
js和jQuery以及easyui实现对下拉框的指定赋值方法
2018/01/23 jQuery
jQuery实现新闻播报滚动及淡入淡出效果示例
2018/03/23 jQuery
vue分页器组件编写方法详解
2019/06/28 Javascript
原生js+canvas实现下雪效果
2020/08/02 Javascript
微信小程序canvas动态时钟
2020/10/22 Javascript
python读取html中指定元素生成excle文件示例
2014/04/03 Python
Python NumPy库安装使用笔记
2015/05/18 Python
使用TensorFlow-Slim进行图像分类的实现
2019/12/31 Python
利用Python实现斐波那契数列的方法实例
2020/07/26 Python
python统计mysql数据量变化并调用接口告警的示例代码
2020/09/21 Python
Python应用自动化部署工具Fabric原理及使用解析
2020/11/30 Python
css3+jq创作含苞待放的荷花
2014/02/20 HTML / CSS
The Athlete’s Foot新西兰:新西兰最大的运动鞋零售商
2019/12/23 全球购物
罗技英国官方网站:Logitech UK
2020/11/03 全球购物
教师找工作推荐信
2013/11/23 职场文书
土木工程专业推荐信
2014/02/19 职场文书
市场营销调查计划书
2014/05/02 职场文书
2014年控辍保学工作总结
2014/12/08 职场文书
2015年招商引资工作总结
2015/04/25 职场文书
2015年度物业公司工作总结
2015/04/27 职场文书
2015年乡镇安全生产工作总结
2015/05/19 职场文书
新闻通讯稿模板
2015/07/22 职场文书
MySQL悲观锁与乐观锁的实现方案
2021/11/02 MySQL