TCP多线程服务器
来源:互联网 发布:风鸣网络 编辑:程序博客网 时间:2024/06/05 05:41
两种版本分别应用两种不同的子线程实现方式
版本一
import socketimport threadingdef func(tcp_socket): while True: # 接收信息 cilent_socket, cilent_addr = tcp_socket.accept() print("接收到来自%s的信息" % str(cilent_addr)) file_name = cilent_socket.recv(1024) a = input() try: file = open(file_name, "rb") while True: data = file.readline() if data: cilent_socket.send(data) else: break except Exception as error: print("文件不存在") else: file.close() print("已发送文件") break cilent_socket.close()def main(): # 创建套接字 tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 设置套接字选项 套接字 选项 重用地址 1代表设置 0代表取消 tcp_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) # 绑定端口 tcp_socket.bind(("", 8888)) # 监听 tcp_socket.listen(128) for i in range(100): i = threading.Thread(target=func, args=(tcp_socket,)) i.start()if __name__ == '__main__': main()
版本二
import socketimport threadingtcp_socket = Noneclass MyThread(threading.Thread): global tcp_socket def run(self): while True: # 接收信息 cilent_socket, cilent_addr = tcp_socket.accept() print("接收到来自%s的信息" % str(cilent_addr)) file_name = cilent_socket.recv(1024) try: file = open(file_name, "rb") while True: data = file.readline() if data: cilent_socket.send(data) else: break except Exception as error: print("文件不存在") else: file.close() print("已发送文件") break cilent_socket.close()if __name__ == '__main__': # 创建套接字 tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 设置套接字 tcp_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) # 绑定 ip 端口 tcp_socket.bind(("", 8888)) # 监听listen tcp_socket.listen(128) for i in range(100): i = MyThread() i.start()
阅读全文
0 0
- linux多线程+TCP服务器
- 多线程TCP socket服务器
- TCP服务器(多线程)
- 多线程TCP服务器
- tcp多线程并发服务器
- TCP多线程服务器
- TCP多线程服务器
- QT多线程TCP接收服务器
- C# TCP多线程服务器示例
- C# TCP多线程服务器示例
- C# TCP多线程服务器示例
- 多进程多线程TCP服务器
- linux下多线程tcp服务器、客户端程序
- QT编写多线程TCP文件接收服务器
- TCP并发服务器实例--多线程
- QT编写多线程TCP文件接收服务器
- QT编写多线程TCP文件接收服务器
- TCP多线程并发服务器+线程池+echo
- fast-json的转换
- Spring MVC 获取请求参数
- 2017-windows安装tensorflow
- Spring教程第一篇:Spring IOC
- Java高并发,如何解决,什么方式解决
- TCP多线程服务器
- Syntax of Lambda Expressions
- HP电脑把windows 10 系统重装 windows7 出现的问题
- 每日一个linux命令(7):kill命令
- Linux网络配置
- shell脚本的24个面试点
- MYSQL不同场景下MySQL的迁移方案
- osgEarth地理网格 18.graticules.earth
- Angular从普通路由到惰性加载