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中的Numeric包和Numarray包使用教程
Apr 13 Python
python开发之IDEL(Python GUI)的使用方法图文详解
Nov 12 Python
详解python3实现的web端json通信协议
Dec 29 Python
详解Python中的Numpy、SciPy、MatPlotLib安装与配置
Nov 17 Python
利用TensorFlow训练简单的二分类神经网络模型的方法
Mar 05 Python
python判断输入日期为第几天的实例
Nov 13 Python
对python的输出和输出格式详解
Dec 08 Python
Django Docker容器化部署之Django-Docker本地部署
Oct 09 Python
Python实现Wordcloud生成词云图的示例
Mar 30 Python
浅谈tensorflow中dataset.shuffle和dataset.batch dataset.repeat注意点
Jun 08 Python
一文带你掌握Pyecharts地理数据可视化的方法
Feb 06 Python
OpenCV-Python 实现两张图片自动拼接成全景图
Jun 11 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
支持oicq头像的留言簿(二)
2006/10/09 PHP
php实现aes加密类分享
2014/02/16 PHP
PHP实现生成唯一会员卡号
2015/08/24 PHP
PHP生成图片缩略图类示例
2017/01/12 PHP
PHP实现找出链表中环的入口节点
2018/01/16 PHP
javascript 事件处理示例分享
2014/12/31 Javascript
nodejs中实现阻塞实例
2015/03/24 NodeJs
详解AngularJS过滤器的使用
2016/03/11 Javascript
深入理解jQuery()方法的构建原理
2016/12/05 Javascript
Mac下安装vue
2018/04/11 Javascript
微信小程序实现购物页面左右联动
2019/02/15 Javascript
Vue.js 无限滚动列表性能优化方案
2019/12/02 Javascript
JavaScript数组排序小程序实现解析
2020/01/13 Javascript
weui上传多图片,压缩,base64编码的示例代码
2020/06/22 Javascript
微信小程序自定义底部弹出框动画
2020/11/18 Javascript
[39:11]DOTA2上海特级锦标赛C组资格赛#2 LGD VS Newbee第二局
2016/02/28 DOTA
Python functools模块学习总结
2015/05/09 Python
python shell根据ip获取主机名代码示例
2017/11/25 Python
TensorFlow保存TensorBoard图像操作
2020/06/23 Python
pandas.DataFrame.drop_duplicates 用法介绍
2020/07/06 Python
Pytest如何使用skip跳过执行测试
2020/08/13 Python
浅谈Html5移动端ios/Android兼容性总结
2018/06/01 HTML / CSS
老海军美国官网:Old Navy
2016/09/05 全球购物
无谷物狗粮:Pooch & Mutt
2018/05/23 全球购物
爱尔兰电脑、家电和家具购物网站:Buy It Direct
2019/07/09 全球购物
介绍一下Linux内核的排队自旋锁
2014/08/27 面试题
上课迟到检讨书100字
2014/01/11 职场文书
应届毕业生通用的自荐书范文
2014/02/07 职场文书
装修设计师求职信
2014/02/26 职场文书
工会工作先进事迹
2014/08/18 职场文书
2014年社团工作总结范文
2014/11/27 职场文书
幼儿园辞职书
2015/02/26 职场文书
寻找成龙观后感
2015/06/12 职场文书
个人收入证明范本
2015/06/12 职场文书
无违反计划生育证明格式
2015/06/24 职场文书
Python加密技术之RSA加密解密的实现
2022/04/08 Python