需要实现并发需要依靠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协议的并发编程)的更多相关文章

  1. 学习笔记——网络编程3(基于TCP协议的网络编程)

    TCP协议基础 IP协议是Internet上使用的一个关键协议,它的全称是Internet Protocol,即Internet协议,通常简称IP协议.   使用ServerSocket创建TCP服务 ...

  2. 基于TCP协议的网络编程

    TCP通信协议是一种可靠的传输层协议,它在通信的两端各建立一个Socket,从而在通信的两端之间形成虚拟网络链路.一旦建立了虚拟的网络链路,两端的程序就可以通过虚拟链路进行通信.Java使用Socke ...

  3. c++下基于windows socket的多线程服务器(基于TCP协议)

    之前用c++实现过基于windows socket的单线程TCP服务器(http://www.cnblogs.com/jzincnblogs/p/5170230.html),今天实现了一个多线程的版本 ...

  4. Java网络编程三--基于TCP协议的网络编程

    ServerSocket对象用于监听来自客户端的Socket连接,如果没有连接,它将一直处于等待状体 Socket accept():如果接收到客户端的连接请求,该方法返回一个与客户端对应Socket ...

  5. (2)socket的基础使用(基于TCP协议)

    socket()模块函数用法 基于TCP协议的套接字程序 netstart -an | findstr 8080 #查看所有TCP和UDP协议的状态,用findstr进行过滤监听8080端口 服务端套 ...

  6. 基于Tcp协议的简单Socket通信实例(JAVA)

    好久没写博客了,前段时间忙于做项目,耽误了些时间,今天开始继续写起~ 今天来讲下关于Socket通信的简单应用,关于什么是Socket以及一些网络编程的基础,这里就不提了,只记录最简单易懂实用的东西. ...

  7. 网络编程——基于TCP协议的Socket编程,基于UDP协议的Socket编程

    Socket编程 目前较为流行的网络编程模型是客户机/服务器通信模式 客户进程向服务器进程发出要求某种服务的请求,服务器进程响应该请求.如图所示,通常,一个服务器进程会同时为多个客户端进程服务,图中服 ...

  8. 基于TCP协议的项目架构之Socket流传输的实现

    项目背景  某银行的影像平台由于使用时间长,服务器等配置原因,老影像系统满足不了现在日益增长的数据量的需求,所以急需要升级改造.传统的影像平台使用的是Oracle数据库和简单的架构来存储数据(视频.图 ...

  9. 网络编程----socket介绍、基于tcp协议的套接字实现、基于udp协议的套接字实现

    一.客户端/服务器架构(C/S架构)                                                即C/S架构,包括: 1.硬件C/S架构(打印机) 2.软件C/S架 ...

随机推荐

  1. (转)Attribute在.net编程中的应用

    Attribute在.net编程中的应用(一)Attribute的基本概念 经常有朋友问,Attribute是什么?它有什么用?好像没有这个东东程序也能运行.实际上在.Net中,Attribute是一 ...

  2. Java 常用对象-BigInteger类

    2017-11-02 21:57:09 BigInteger类:不可变的任意精度的整数.所有操作中,都以二进制补码形式表示 BigInteger(如 Java 的基本整数类型).BigInteger ...

  3. Redis之有序集合命令

    Redis 有序集合(sorted set) Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员. 不同的是每个元素都会关联一个double类型的分数.redis正是通过 ...

  4. 20170813xlVBA跨表筛选数据

    一.数组方案 Sub CustomFilter() Dim Rng As Range, Arr As Variant Dim EndRow As Long, EndCol As Long Dim i ...

  5. IIS Web 服务器/ASP.NET 运行原理基本知识概念整理

     前言:      记录 IIS 相关的笔记还是从公司笔试考核题开始的,问 Application Pool 与 AppDomain 的区别?      促使我对进程池进了知识的学习,所以记录一下学习 ...

  6. vs2012修改代码编辑区域的背景色

  7. Mybatis学习总结-----mybatis中refid是什么意思(十)

    1.首先定义一个sql标签,一定要定义唯一id<sql id="Base_Column_List" >name,age</sql>2.然后通过id引用< ...

  8. spring cloud学习(五)断路器 Hystrix

    断路器 Hystrix 断路器模式 (云计算设计模式) 断路器模式源于Martin Fowler的Circuit Breaker一文. 在分布式环境中,其中的应用程序执行访问远程资源和服务的操作,有可 ...

  9. 基于高通 qca4531 mp3 demo板 双系统引导设计

    为了系统和稳定性,flash上有两套系统.在uboot引导阶段会根据当前的bootslot变量,决择运行哪套系统.进入系统之后,会自动挂载数据区,然后启动开关的应用程序. 如上图所示系统有两块存储芯片 ...

  10. 当前标识没有对“C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files”的写访问权限。

    解决方案: PHP程序如果遇到这个问题,请将应用程序池.NET改成无托管代码