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 collections模块实例讲解
Apr 07 Python
python构建深度神经网络(续)
Mar 10 Python
浅谈Pycharm中的Python Console与Terminal
Jan 17 Python
由面试题加深对Django的认识理解
Jul 19 Python
从numpy数组中取出满足条件的元素示例
Nov 26 Python
python多进程并发demo实例解析
Dec 13 Python
详解opencv中画圆circle函数和椭圆ellipse函数
Dec 27 Python
Python实现常见的几种加密算法(MD5,SHA-1,HMAC,DES/AES,RSA和ECC)
May 09 Python
Python新手如何进行闭包时绑定变量操作
May 29 Python
Pymysql实现往表中插入数据过程解析
Jun 02 Python
Python 列表中的修改、添加和删除元素的实现
Jun 11 Python
Python做图像处理及视频音频文件分离和合成功能
Nov 24 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 团购折扣计算公式
2011/11/24 PHP
在PHP中运行Linux命令并启动SSH服务的例子
2014/06/12 PHP
php调用shell的方法
2014/11/05 PHP
php实现的读取CSV文件函数示例
2017/02/07 PHP
详解PHP防止盗链防止迅雷下载的方法
2017/04/26 PHP
PHP实现唤起微信支付功能
2019/02/18 PHP
JavaScript 10件让人费解的事情
2010/02/15 Javascript
jQuery简单实现验证邮箱格式
2015/07/15 Javascript
JS不用正则验证输入的字符串是否为空(包含空格)的实现代码
2016/06/14 Javascript
switch语句的妙用(必看篇)
2016/10/03 Javascript
微信js-sdk上传与下载图片接口用法示例
2016/10/12 Javascript
BootStrap Table前台和后台分页对JSON格式的要求
2017/06/28 Javascript
vue.js select下拉框绑定和取值方法
2018/03/03 Javascript
vue 中引用gojs绘制E-R图的方法示例
2018/08/24 Javascript
javscript 数组扁平化的实现
2020/02/03 Javascript
python随机生成指定长度密码的方法
2015/04/04 Python
Python函数式编程指南(三):迭代器详解
2015/06/24 Python
python多进程和多线程究竟谁更快(详解)
2017/05/29 Python
django反向解析和正向解析的方式
2018/06/05 Python
Python设计模式之策略模式实例详解
2019/01/21 Python
python实现的生成word文档功能示例
2019/08/23 Python
Python实现结构体代码实例
2020/02/10 Python
英国护肤品购物网站:Beauty Expert
2016/08/19 全球购物
Charlotte Tilbury澳大利亚官网:英国美妆品牌
2018/10/05 全球购物
娇韵诗法国官网:Clarins法国
2019/01/29 全球购物
沙特阿拉伯排名第一的在线时尚购物应用程序:1Zillion
2020/08/08 全球购物
2014学年自我鉴定
2014/02/23 职场文书
男女朋友协议书
2014/04/23 职场文书
保护环境倡议书500字
2014/05/19 职场文书
条幅标语大全
2014/06/20 职场文书
纪念九一八事变演讲稿:勿忘国耻
2014/09/14 职场文书
护士个人年度总结范文
2015/02/13 职场文书
植树节新闻稿
2015/07/17 职场文书
2016年六一儿童节开幕词
2016/03/04 职场文书
2016年暑期社会实践活动总结报告
2016/04/06 职场文书
Django项目如何获得SSL证书与配置HTTPS
2021/04/30 Python