(4)socket的基础使用(基于TCP协议的并发编程)
需要实现并发需要依靠socketserver 模块
socketserver模块下有几个功能
def __init__(self, request, client_address, server):
self.request = request
self.client_address = client_address
self.server = server
self.setup()
try:
self.handle()
finally:
self.finish() def setup(self):
pass def handle(self): #要实现并发就要调用这个功能
pass def finish(self):
pass
TCP协议实现并发编程步骤详解(客户端不需要改动,改动的就是服务端)
import socketserver #需要导入socketserver模块 class MyHander(socketserver.BaseRequestHandler):#这个类就是要继承socketserver模块下的BaseRequestHandler功能,这是规定的
def handle(self):
'''这个request 就相当于我们自己写服务端的时候conn这个变量<socket.socket fd=248, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('127.0.0.1', 8080), raddr=('127.0.0.1', 50687)>里面包含了协议类型,服务端的地址和端口,客户端的地址和端口'''
data = self.request.recv(1024) #request就是请求 self.request.send(data.upper()) 给客户端发送结果
PS:self.下面有几个功能,可以查看客户端发送来的地址,请求等信息,client_address就是客户端发送来的地址,request就是发送来的请求 if __name__ == '__main__':
'''ThreadingTCPServer就是多开一个线程来服务客户端,ThreadingTCPServer底层已经封装了相当于我们自己写的基于服务端的代码,而且还自动开了多进程和多线程,所以用这个模块就不用再自己写服务端'''
s = socketserver.ThreadingTCPServer(('127.0.0.1',8080),MyHander,bind_and_activate=True)
s.serve_forever() #实例化后需要sever_forver来实现永久监听,就是永远启动这个服务
'''需要传入三个参数'''
1:server_address就是要启动这个多线程服务需要知道监听的端口和地址#
2:RequestHandlerClass 这个就是一个类,就是我们自己要写一个类,这个类就是处理客户端请求的
3:bind_and_activate 这个参数就相当于服务端里面的bind和listen PS:当一个请求发送过来后,会把请求交给MyHander这个类,会自动进行一个实例化,默认调用类下的handle方法
(4)socket的基础使用(基于TCP协议的并发编程)的更多相关文章
- 学习笔记——网络编程3(基于TCP协议的网络编程)
TCP协议基础 IP协议是Internet上使用的一个关键协议,它的全称是Internet Protocol,即Internet协议,通常简称IP协议. 使用ServerSocket创建TCP服务 ...
- 基于TCP协议的网络编程
TCP通信协议是一种可靠的传输层协议,它在通信的两端各建立一个Socket,从而在通信的两端之间形成虚拟网络链路.一旦建立了虚拟的网络链路,两端的程序就可以通过虚拟链路进行通信.Java使用Socke ...
- c++下基于windows socket的多线程服务器(基于TCP协议)
之前用c++实现过基于windows socket的单线程TCP服务器(http://www.cnblogs.com/jzincnblogs/p/5170230.html),今天实现了一个多线程的版本 ...
- Java网络编程三--基于TCP协议的网络编程
ServerSocket对象用于监听来自客户端的Socket连接,如果没有连接,它将一直处于等待状体 Socket accept():如果接收到客户端的连接请求,该方法返回一个与客户端对应Socket ...
- (2)socket的基础使用(基于TCP协议)
socket()模块函数用法 基于TCP协议的套接字程序 netstart -an | findstr 8080 #查看所有TCP和UDP协议的状态,用findstr进行过滤监听8080端口 服务端套 ...
- 基于Tcp协议的简单Socket通信实例(JAVA)
好久没写博客了,前段时间忙于做项目,耽误了些时间,今天开始继续写起~ 今天来讲下关于Socket通信的简单应用,关于什么是Socket以及一些网络编程的基础,这里就不提了,只记录最简单易懂实用的东西. ...
- 网络编程——基于TCP协议的Socket编程,基于UDP协议的Socket编程
Socket编程 目前较为流行的网络编程模型是客户机/服务器通信模式 客户进程向服务器进程发出要求某种服务的请求,服务器进程响应该请求.如图所示,通常,一个服务器进程会同时为多个客户端进程服务,图中服 ...
- 基于TCP协议的项目架构之Socket流传输的实现
项目背景 某银行的影像平台由于使用时间长,服务器等配置原因,老影像系统满足不了现在日益增长的数据量的需求,所以急需要升级改造.传统的影像平台使用的是Oracle数据库和简单的架构来存储数据(视频.图 ...
- 网络编程----socket介绍、基于tcp协议的套接字实现、基于udp协议的套接字实现
一.客户端/服务器架构(C/S架构) 即C/S架构,包括: 1.硬件C/S架构(打印机) 2.软件C/S架 ...
随机推荐
- GitHub 中国区前 100 名到底是什么样的人?
转一下CSDN的文章, 这里有些人挺厉害的. http://geek.csdn.net/news/detail/66000
- AC自动机练习
多模板串匹配一般有两种方法 暴力kmp, 适用于模板串少的情形 直接trie上暴力, 适用于模板串比较短的情形, 并且可以动态插入合并 建立AC自动机, 复杂度是严格线性的, 但不能动态插入 cons ...
- svn拒绝连接
svn 服务开启: svnserve -d -r /home/svn
- FREETEXTBOX
本文转自http://blog.csdn.net/JOHNCOOLS/archive/2006/04/08/655553.aspx感谢作者们的付出---------------版本: FreeText ...
- 从客户端(......)中检测到有潜在危险的 Request.Form 值
在提交表单时候,asp.net 提示:"从客户端(......)中检测到有潜在危险的 Request.Form 值" .asp.net中的请求验证特性提供了某一等级的保护措施防止X ...
- 【webpack系列】1 What is webpack?
什么是webpack? 现今的网页可以看做是功能丰富的应用,拥有着复杂的js代码和一大堆依赖包.为了简化开发的复杂程度,有了很多好用的实践方法 模块化 让我们可以把复杂的程序细化为小的文件 类似于Ty ...
- JavaScript权威指南(第6版)(中文版)笔记
JavaScript权威指南(第6版)(中文版)笔记
- 067——VUE中vue-router之使用transition设置酷炫的路由组件过渡动画效果
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- mongodb的capped Collection集合
db.createCollection(name, {capped: true, autoIndexId: true, size: 1000, max :100} ) name:集合的名字 cappe ...
- python函数def
#函数就是实现一个特定功能的程序块 #下面这个函数实现了打印helloworld的功能 def print_hello(): print('hello world!') #这是调用方法 print_h ...