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对列表排序的方法实例分析
May 16 Python
Python字符串处理之count()方法的使用
May 18 Python
python实现远程通过网络邮件控制计算机重启或关机
Feb 22 Python
遗传算法python版
Mar 19 Python
将TensorFlow的模型网络导出为单个文件的方法
Apr 23 Python
Python实现简单查找最长子串功能示例
Feb 26 Python
Python调用百度根据经纬度查询地址的示例代码
Jul 07 Python
Django项目基础配置和基本使用过程解析
Nov 25 Python
Pytorch 神经网络—自定义数据集上实现教程
Jan 07 Python
用python-webdriver实现自动填表的示例代码
Jan 13 Python
PyQt5实现多张图片显示并滚动
Jun 11 Python
关于python类SortedList详解
Sep 04 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操作redis缓存方法分享
2015/06/03 PHP
简单了解将WordPress中的工具栏移到底部的小技巧
2015/12/31 PHP
分享一个漂亮的php验证码类
2016/09/29 PHP
TP5框架使用QueryList采集框架爬小说操作示例
2020/03/26 PHP
jQuery 技巧大全(新手入门篇)
2009/05/12 Javascript
jquery UI 1.72 之datepicker
2009/12/29 Javascript
jquery 1.4.2发布!主要是性能与API
2010/02/25 Javascript
jquery简单实现外部链接用新窗口打开的方法
2015/05/30 Javascript
jQuery 1.9.1源码分析系列(十)事件系统之主动触发事件和模拟冒泡处理
2015/11/24 Javascript
深入浅析JSON.parse()、JSON.stringify()和eval()的作用详解
2016/04/03 Javascript
Bootstrap按钮功能之查询按钮和重置按钮
2016/10/26 Javascript
AngularJS实现动态编译添加到dom中的方法
2016/11/04 Javascript
利用vue-router实现二级菜单内容转换
2016/11/30 Javascript
详解Angular2响应式表单
2017/06/14 Javascript
前端防止用户重复提交js实现代码示例
2018/09/07 Javascript
vue移动端下拉刷新和上拉加载的实现代码
2018/09/08 Javascript
深入浅出vue图片路径的实现
2019/09/04 Javascript
layui table动态表头 改变表格头部 重新加载表格的方法
2019/09/21 Javascript
使用preload预加载页面资源时注意事项
2020/02/03 Javascript
零基础写python爬虫之使用urllib2组件抓取网页内容
2014/11/04 Python
基于Python中capitalize()与title()的区别详解
2017/12/09 Python
python二维键值数组生成转json的例子
2019/12/06 Python
Yahoo的PHP面试题
2014/05/26 面试题
Java的五个基础面试题
2016/02/26 面试题
音乐器材管理制度
2014/01/31 职场文书
金融管理应届生求职信
2014/02/20 职场文书
会务接待方案
2014/02/27 职场文书
社会体育专业大学生职业生涯规划书
2014/09/17 职场文书
党员干部群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
2014年妇女工作总结
2014/12/06 职场文书
发布会邀请函
2015/01/31 职场文书
幼儿园毕业典礼园长致辞
2015/07/29 职场文书
公安忠诚教育心得体会
2016/01/23 职场文书
vue使用v-model进行跨组件绑定的基本实现方法
2021/04/28 Vue.js
手把手教你从零开始react+antd搭建项目
2021/06/03 Javascript
CSS 实现Chrome标签栏的技巧
2021/08/04 HTML / CSS