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实现115网盘自动下载的方法
Sep 30 Python
python3处理含有中文的url方法
May 10 Python
Python中变量的输入输出实例代码详解
Jul 28 Python
Python 转换文本编码实现解析
Aug 27 Python
基于python解线性矩阵方程(numpy中的matrix类)
Oct 21 Python
python字符串的拼接方法总结
Nov 18 Python
解决python虚拟环境切换无效的问题
Apr 30 Python
python golang中grpc 使用示例代码详解
Jun 03 Python
基于python实现MQTT发布订阅过程原理解析
Jul 27 Python
手把手教你将Flask应用封装成Docker服务的实现
Aug 19 Python
Django Admin后台模型列表页面如何添加自定义操作按钮
Nov 11 Python
Python Pandas pandas.read_sql_query函数实例用法分析
Jun 21 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
全国FM电台频率大全 - 19 广东省
2020/03/11 无线电
很温暖很温暖的Lester Young
2021/03/03 冲泡冲煮
php将数据库中的电话号码读取出来并生成图片
2008/08/31 PHP
php使用MySQL保存session会话的方法
2015/06/26 PHP
如何通过View::first使用Laravel Blade的动态模板详解
2017/09/21 PHP
PHP利用DWZ.CN服务生成短网址
2019/08/11 PHP
jQuery实现表单input中提示文字value随鼠标焦点移进移出而显示或隐藏的代码
2010/03/21 Javascript
纯Javascript实现Windows 8 Metro风格实现
2013/10/15 Javascript
JS两种定义方式的区别、内部原理
2013/11/21 Javascript
JS使用正则表达式除去字符串中重复字符的方法
2015/11/05 Javascript
30分钟快速掌握Bootstrap框架
2016/05/24 Javascript
ajax实现动态下拉框示例
2017/01/10 Javascript
node.js操作MongoDB的实例详解
2017/10/11 Javascript
Vue使用Proxy监听所有接口状态的方法实现
2019/06/07 Javascript
[01:11:28]DOTA2-DPC中国联赛定级赛 RNG vs Phoenix BO3第一场 1月8日
2021/03/11 DOTA
PHP网页抓取之抓取百度贴吧邮箱数据代码分享
2016/04/13 Python
Python编程二分法实现冒泡算法+快速排序代码示例
2018/01/15 Python
Python numpy 提取矩阵的某一行或某一列的实例
2018/04/03 Python
对pyqt5中QTabWidget的相关操作详解
2019/06/21 Python
python对csv文件追加写入列的方法
2019/08/01 Python
wxPython实现整点报时
2019/11/18 Python
python爬虫学习笔记之pyquery模块基本用法详解
2020/04/09 Python
Python flask框架端口失效解决方案
2020/06/04 Python
JupyterNotebook 输出窗口的显示效果调整实现
2020/09/22 Python
关于Python字符编码与二进制不得不说的一些事
2020/10/04 Python
Python3 用matplotlib绘制sigmoid函数的案例
2020/12/11 Python
matplotlib之pyplot模块之标题(title()和suptitle())
2021/02/22 Python
高级3D打印市场:Gambody
2019/12/26 全球购物
大学毕业生简单自荐信
2013/11/05 职场文书
大学生毕业自我评价范文分享
2013/11/11 职场文书
2014年政府采购工作总结
2014/12/09 职场文书
芙蓉镇观后感
2015/06/10 职场文书
大学生干部培训心得体会
2016/01/06 职场文书
2016年六一文艺汇演开幕词
2016/03/04 职场文书
springboot中一些比较常用的注解总结
2021/06/11 Java/Android
详解java如何集成swagger组件
2021/06/21 Java/Android