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调用机器喇叭发出蜂鸣声(Beep)的方法
Mar 23 Python
简单理解Python中的装饰器
Jul 31 Python
python中字符串变二维数组的实例讲解
Apr 03 Python
python 实现调用子文件下的模块方法
Dec 07 Python
Python XlsxWriter模块Chart类用法实例分析
Mar 11 Python
dpn网络的pytorch实现方式
Jan 14 Python
python matplotlib模块基本图形绘制方法小结【直线,曲线,直方图,饼图等】
Apr 26 Python
python 基于卡方值分箱算法的实现示例
Jul 17 Python
python用opencv 图像傅里叶变换
Jan 04 Python
python中pymysql包操作数据库方法
Apr 19 Python
使用Python获取字典键对应值的方法
Apr 26 Python
python实现双向链表原理
May 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
全国FM电台频率大全 - 30 宁夏回族自治区
2020/03/11 无线电
用php将任何格式视频转为flv的代码
2009/09/03 PHP
PHP递归删除目录几个代码实例
2014/04/21 PHP
Codeigniter框架的更新事务(transaction)BUG及解决方法
2014/07/25 PHP
php中ltrim()、rtrim()与trim()删除字符空格实例
2014/11/25 PHP
ThinkPHP实现动态包含文件的方法
2014/11/29 PHP
php7安装yar扩展的方法详解
2017/08/03 PHP
在视频前插入广告
2006/11/20 Javascript
jscript之Open an Excel Spreadsheet
2007/06/13 Javascript
javascript 实现简单的table排序及table操作练习
2012/12/28 Javascript
jQuery中 noConflict() 方法使用
2013/04/25 Javascript
javascript仿京东导航左侧分类导航下拉菜单效果
2020/11/25 Javascript
如何在JS中实现相互转换XML和JSON
2016/07/19 Javascript
深入理解JS中的Function.prototype.bind()方法
2016/10/11 Javascript
Bootstrap实现的表格合并单元格示例
2018/02/06 Javascript
Nuxt.js SSR与权限验证的实现
2018/11/21 Javascript
小程序开发中如何使用async-await并封装公共异步请求的方法
2019/01/20 Javascript
js实现鼠标拖拽缩放div实例代码
2019/03/25 Javascript
vue.js 2.*项目环境搭建、运行、打包发布的详细步骤
2019/05/01 Javascript
微信浏览器下拉黑边解决方案 wScroollFix
2020/01/21 Javascript
基于js实现数组相邻元素上移下移
2020/05/19 Javascript
vue element ui validate 主动触发错误提示操作
2020/09/21 Javascript
在Python中marshal对象序列化的相关知识
2015/07/01 Python
通过python顺序修改文件名字的方法
2018/07/11 Python
python for循环输入一个矩阵的实例
2018/11/14 Python
win10环境下配置vscode python开发环境的教程详解
2019/10/16 Python
Django多数据库联用实现方法解析
2020/11/12 Python
HTML5 拖拽批量上传文件的示例代码
2018/03/28 HTML / CSS
土耳其国际性时尚购物网站:Modanisa
2018/01/19 全球购物
《小小雨点》教学反思
2014/02/18 职场文书
《搭石》教学反思
2014/04/07 职场文书
法人授权委托书
2014/09/16 职场文书
linux下导入、导出mysql数据库命令的实现方法
2021/05/26 MySQL
html粘性页脚的具体使用
2022/01/18 HTML / CSS
分享一个vue实现的记事本功能案例
2022/04/11 Vue.js
Python采集爬取京东商品信息和评论并存入MySQL
2022/04/12 Python