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 相关文章推荐
Flask的图形化管理界面搭建框架Flask-Admin的使用教程
Jun 13 Python
python制作企业邮箱的爆破脚本
Oct 05 Python
Python实现霍夫圆和椭圆变换代码详解
Jan 12 Python
python用插值法绘制平滑曲线
Feb 19 Python
如何使用Python进行OCR识别图片中的文字
Apr 01 Python
详解用python写网络爬虫-爬取新浪微博评论
May 10 Python
flask实现验证码并验证功能
Dec 05 Python
python实现tail实时查看服务器日志示例
Dec 24 Python
python正则过滤字母、中文、数字及特殊字符方法详解
Feb 11 Python
python递归函数求n的阶乘,优缺点及递归次数设置方式
Apr 02 Python
Python3中FuzzyWuzzy库实例用法
Nov 18 Python
Python爬虫入门案例之爬取去哪儿旅游景点攻略以及可视化分析
Oct 16 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
单位速度在实战中的运用
2020/03/04 星际争霸
PHP二维数组的去重问题解析
2011/07/17 PHP
基于php伪静态的实现详细介绍
2013/04/28 PHP
PHP4和PHP5版本下解析XML文档的操作方法实例分析
2017/05/20 PHP
Open and Print a Word Document
2007/06/15 Javascript
js类后台管理菜单类-MenuSwitch
2007/09/12 Javascript
基于jquery中children()与find()的区别介绍
2013/04/26 Javascript
面向对象设计模式的核心法则
2013/11/10 Javascript
jQuery插件开发的五种形态小结
2015/03/04 Javascript
javascript顺序加载图片的方法
2015/07/18 Javascript
jquery实现的横向二级导航效果代码
2015/08/26 Javascript
JavaScript必知必会(七)js对象继承
2016/06/08 Javascript
jQuery异步提交表单的两种方式
2016/09/13 Javascript
jquery实现图片列表鼠标移入微动
2016/12/01 Javascript
vue-cli如何添加less 以及sass
2017/07/06 Javascript
浅谈Webpack自动化构建实践指南
2017/12/18 Javascript
vue分页插件的使用方法
2019/12/25 Javascript
Vue Render函数创建DOM节点代码实例
2020/07/08 Javascript
[01:14]3.19DOTA2发布会 三代刀塔人第二代
2014/03/25 DOTA
Python入门篇之数字
2014/10/20 Python
Python的math模块中的常用数学函数整理
2016/02/04 Python
浅谈python中scipy.misc.logsumexp函数的运用场景
2016/06/23 Python
python与C互相调用的方法详解
2017/07/14 Python
Python代码实现KNN算法
2017/12/20 Python
Python matplotlib画图实例之绘制拥有彩条的图表
2017/12/28 Python
Python OpenCV读取png图像转成jpg图像存储的方法
2018/10/28 Python
Juicy Couture Beauty官方网站:香水和化妆品
2019/03/12 全球购物
荷兰家电销售网站:Welhof
2020/12/08 全球购物
一百多行代码实现react拖拽hooks
2021/03/23 Javascript
仓库理货员岗位职责
2013/12/18 职场文书
运动会入场解说词300字
2014/01/25 职场文书
违章停车检讨书
2014/10/21 职场文书
cf战队宣传语
2015/07/13 职场文书
消防宣传标语大全
2015/08/03 职场文书
MySql新手入门的基本操作汇总
2021/05/13 MySQL
Redis sentinel哨兵集群的实现步骤
2022/07/15 Redis