python使用多线程编写tcp客户端程序
更新时间:2019年09月02日 08:40:32 作者:bai_yun_123
这篇文章主要为大家详细介绍了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' % 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()
该代码只能实现要么一直发送,要么一直接收
运行如图
发送数据时截图


接收数据时截图


为解决只能单方发送和接收问题,现将代码修改如下
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()
运行结果


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
- Python3 socket即时通讯脚本实现代码实例(threading多线程)
- python使用多线程+socket实现端口扫描
- 解决python ThreadPoolExecutor 线程池中的异常捕获问题
- 解决python多线程报错:AttributeError: Can''t pickle local object问题
- python实现自动化报表功能(Oracle/plsql/Excel/多线程)
- python多线程实现TCP服务端
- Python实现多线程/多进程的TCP服务器
- Python3多线程版TCP端口扫描器
- python单线程下实现多个socket并发过程详解
- 详解C语言和Python中的线程混用
相关文章
python opencv图像处理(素描、怀旧、光照、流年、滤镜 原理及实现)
这篇文章主要介绍了python 基于opencv对图像进行各种处理,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下2020-12-12
Mac上Python使用ffmpeg完美解决方案(避坑必看!)
ffmpeg是一个强大的开源命令行多媒体处理工具,下面这篇文章主要给大家介绍了关于Mac上Python使用ffmpeg完美解决方案的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下2023-02-02
Python计算一个给定时间点前一个月和后一个月第一天的方法
这篇文章主要介绍了Python计算一个给定时间点前一个月和后一个月第一天的方法,涉及Python使用datetime模块计算日期时间的相关操作技巧,需要的朋友可以参考下2018-05-05
Python中的getattr、__getattr__、__getattribute__、__get__详解
这篇文章主要为大家介绍了Python中的getattr,__getattr__,__getattribute__和__get__,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助2021-12-12


最新评论