python使用多线程编写tcp客户端程序
更新时间:2019年09月02日 08:40:32 作者:bai_yun_123
这篇文章主要为大家详细介绍了python使用多线程编写tcp客户端程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
今天在网上找了半天,发现很多关于此题目的程序都只能接收数据,所以随便找了个程序研究了一下,然后做出一些修改
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | 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() |
该代码只能实现要么一直发送,要么一直接收
运行如图
发送数据时截图
接收数据时截图
为解决只能单方发送和接收问题,现将代码修改如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | 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中的线程混用
微信公众号搜索 “ 脚本之家 ” ,选择关注
程序猿的那些事、送书等活动等着你
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 reterry123@163.com 进行投诉反馈,一经查实,立即处理!
最新评论