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将xml xsl文件生成html文件存储示例讲解
Dec 03 Python
利用python实现简单的邮件发送客户端示例
Dec 23 Python
pycharm新建一个python工程步骤
Jul 16 Python
Python 实现数据结构-堆栈和队列的操作方法
Jul 17 Python
python3 pillow模块实现简单验证码
Oct 31 Python
Python面向对象之继承原理与用法案例分析
Dec 31 Python
python 3.8.3 安装配置图文教程
May 21 Python
浅析python中的del用法
Sep 02 Python
python 递归相关知识总结
Mar 03 Python
python中tkinter复选框使用操作
Nov 11 Python
Python如何使用循环结构和分支结构
Apr 13 Python
Python获取字典中某个key的value
Apr 13 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+JS无限级可伸缩菜单详解(简单易懂)
2007/01/02 PHP
使用php实现下载生成某链接快捷方式的解决方法
2013/05/07 PHP
php5.2的curl-bug 服务器被php进程卡死问题排查
2016/09/19 PHP
php获取'/'传参的值简单方法
2017/07/13 PHP
php微信公众号开发之秒杀
2018/10/20 PHP
php+ajax 文件上传代码实例
2019/03/18 PHP
取键盘键位ASCII码的网页
2007/07/30 Javascript
Tab页界面,用jQuery及Ajax技术实现
2009/09/21 Javascript
基于jQuery的日期选择控件
2009/10/27 Javascript
js数组Array sort方法使用深入分析
2013/02/21 Javascript
多个表单中如何获得这个文件上传的网址实现js代码
2013/03/25 Javascript
js中apply方法的使用详细解析
2013/11/04 Javascript
在JS中解析HTML字符串示例代码
2014/04/16 Javascript
jQuery实现切换字体大小的方法
2015/03/10 Javascript
JS中完美兼容各大浏览器的scrolltop方法
2015/04/17 Javascript
JS将滑动门改为选项卡(需鼠标点击)的实现方法
2015/09/27 Javascript
超赞的jQuery图片滑块动画特效代码汇总
2016/01/25 Javascript
Vue.js学习教程之列表渲染详解
2017/05/17 Javascript
node.js读取Excel数据(下载图片)的方法示例
2018/08/02 Javascript
[32:17]完美世界DOTA2联赛循环赛LBZS vs Forest第二场 10月30日
2020/10/31 DOTA
python中私有函数调用方法解密
2016/04/29 Python
浅谈numpy库的常用基本操作方法
2018/01/09 Python
python树莓派红外反射传感器
2019/01/21 Python
香港卓悦化妆品官网:BONJOUR
2017/09/21 全球购物
巴西一家专门从事家居和装饰的连锁店:Camicado
2019/08/14 全球购物
final, finally, finalize的区别
2012/03/01 面试题
30年同学聚会邀请函
2014/01/25 职场文书
高中数学教学反思
2014/01/30 职场文书
理想点亮人生演讲稿
2014/05/21 职场文书
2014年乡镇领导个人整改措施
2014/09/19 职场文书
2016年教师政治思想表现评语
2015/12/02 职场文书
读《人生的智慧》有感:闲暇是人生的精华
2019/12/25 职场文书
python for循环赋值问题
2021/06/03 Python
postgres之jsonb属性的使用操作
2021/06/23 PostgreSQL
SpringBoot工程下使用OpenFeign的坑及解决
2021/07/02 Java/Android
python数据处理之Pandas类型转换
2022/04/28 Python