| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 546 人关注过本帖
标题:基于threading多线程并发TCP套接字-萌新学习笔记
只看楼主 加入收藏
zxq0103
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2023-3-10
结帖率:0
收藏
 问题点数:0 回复次数:2 
基于threading多线程并发TCP套接字-萌新学习笔记
程序代码:

'''
    基于threading多线程并发TCP套接字
'''
# 导入模块
from socket import *
from threading import Thread
import os,sys
# 全局变量,地址和端口
ADDR = ('0.0.0.0',8888)
# 创建套接字    
s = socket()
# 设置端口立刻重用
s.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)
# 绑定地址端口
s.bind(ADDR)
# 开始监听
s.listen()

print('Listen the port 8888...')
# 接收并处理消息线程
def handle(c):
    while True:
        try: # 处理遇到的客户端意外断开的异常
            data = c.recv(1024)
            if not data:
                break
            print(data.decode())
            c.send(b'OK')
        except:
            break
    c.close()
# 主线程开始
while True:
    try: # 处理遇到的异常
        c,addr = s.accept()
        print('Connect from',addr)
    except KeyboardInterrupt:
        sys.exit('退出服务器')
    except Exception as e:
        print(e)
        continue
    # 创建线程并发处理每一个收到的消息
    t = Thread(target=handle,args=(c,))
    t.setDaemon(True) # 线程回收处理
    t.start() # 开始线程
搜索更多相关主题的帖子: 线程 套接字 threading 并发 处理 
2023-04-23 15:29
东海ECS
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:Python
等 级:版主
威 望:32
帖 子:412
专家分:1646
注 册:2023-1-24
收藏
得分:0 
程序的最后部分包括一个主循环和异常处理部分。在主循环中,程序会不断地接收连接请求,并开启新的线程来处理每一个连接。在每个连接的线程中,程序会不断地接收消息,并将其处理后回复给客户端。如果在处理过程中出现异常,程序会停止处理该连接,并关闭套接字c。如果在接收连接请求时出现异常,程序会忽略该连接请求,并在终端上输出异常信息。如果在主循环中出现键盘中断的异常,则程序会退出并输出退出服务器的提示信息。

总的来说,基于threading多线程并发TCP套接字的编程思路非常简单:创建一个TCP套接字,并在主循环中不断接收连接请求,并开启新的线程来处理每一个连接。在每个连接的线程中,程序会不断地接收消息,并将其处理后回复给客户端。当连接关闭后,程序会关闭套接字,回收线程,并等待下一个连接到来。

会当凌绝顶,一览众山小.
2023-04-23 20:11
zxq0103
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2023-3-10
收藏
得分:0 
回复 2楼 东海ECS
大神,几句话把我所有的东西都说出来了,膜拜
2023-04-25 14:01
快速回复:基于threading多线程并发TCP套接字-萌新学习笔记
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017378 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved