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 相关文章推荐
Eclipse + Python 的安装与配置流程
Mar 05 Python
Python中bisect的用法
Sep 23 Python
Python环境下安装使用异步任务队列包Celery的基础教程
May 07 Python
在Pycharm terminal中字体大小设置的方法
Jan 16 Python
对python函数签名的方法详解
Jan 22 Python
Python匿名函数/排序函数/过滤函数/映射函数/递归/二分法
Jun 05 Python
对python3中的RE(正则表达式)-详细总结
Jul 23 Python
使用Python制作一个打字训练小工具
Oct 01 Python
小 200 行 Python 代码制作一个换脸程序
May 12 Python
Python如何使用正则表达式爬取京东商品信息
Jun 01 Python
python基础之类方法和静态方法
Oct 24 Python
Python first-order-model实现让照片动起来
Jun 25 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 如何利用phpexcel导入数据库
2013/08/24 PHP
PHP实现的防止跨站和xss攻击代码【来自阿里云】
2018/01/29 PHP
laravel 框架结合关联查询 when()用法分析
2019/11/22 PHP
js控制框架刷新
2008/08/01 Javascript
如何在JavaScript中实现私有属性的写类方式(二)
2013/12/04 Javascript
NodeJS学习笔记之Connect中间件模块(一)
2015/01/27 NodeJs
jQuery背景插件backstretch使用指南
2015/04/21 Javascript
JavaScript实现添加及删除事件的方法小结
2015/08/04 Javascript
javascript 四十条常用技巧大全
2016/09/09 Javascript
常用js,css文件统一加载方法(推荐) 并在加载之后调用回调函数
2016/09/23 Javascript
vue项目环境变量配置的实现方法
2018/10/12 Javascript
微信小程序实现文字从右向左无限滚动
2020/11/18 Javascript
基于Vue实现电商SKU组合算法问题
2019/05/29 Javascript
Vuex模块化应用实践示例
2020/02/03 Javascript
JS求解两数之和算法详解
2020/04/28 Javascript
vuecli3.x中轻松4步带你使用tinymce的步骤
2020/06/25 Javascript
Python实现的ini文件操作类分享
2014/11/20 Python
python操作 hbase 数据的方法
2016/12/18 Python
Python实现扩展内置类型的方法分析
2017/10/16 Python
numpy 进行数组拼接,分别在行和列上合并的实例
2018/05/08 Python
Win8下python3.5.1安装教程
2020/07/29 Python
Python对接六大主流数据库(只需三步)
2019/07/31 Python
Tensorflow 1.0之后模型文件、权重数值的读取方式
2020/02/12 Python
Python实现对adb命令封装
2020/03/06 Python
基于CSS3实现的几个小loading效果
2018/09/27 HTML / CSS
捷克时尚网上商店:OTTO
2018/03/15 全球购物
Moss Bros官网:英国排名第一的西装店
2020/02/26 全球购物
thinkphp5 redis缓存新增方法实例讲解
2021/03/24 PHP
2013届毕业生求职信范文
2013/11/20 职场文书
计算机数据库专业职业生涯规划书
2014/02/08 职场文书
村委会换届选举方案
2014/05/03 职场文书
亚运会口号
2014/06/20 职场文书
交警失职检讨书
2015/01/26 职场文书
党章党规党纪学习心得体会
2016/01/14 职场文书
Python基础之数据结构详解
2021/04/28 Python
MYSQL优化之数据表碎片整理详解
2022/04/03 MySQL