`
leixbo
  • 浏览: 33966 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

python socket 之SocketServer

 
阅读更多

SocketServer模块为简化网络编程,对底层socket进行了封装。在3.0之后,模块名称改成了小写socketserver

 

SocketServer介绍 

 

There are four basic server classes: TCPServer uses the Internet TCP protocol, which provides for continuous streams of data between the client and server. UDPServer uses datagrams, which are discrete packets of information that may arrive out of order or be lost while in transit. The more infrequently used UnixStreamServer and UnixDatagramServer classes are similar, but use Unix domain sockets; they’re not available on non-Unix platforms。

 

主要有TCPServer、UDPServer、UnixStreamServer、UnixDatagramServer,类关系如下,主要用前2个Server,分别服务于TCP、UDP服务

 

+---------------+

| BaseServer |

+---------------+

      |

      v

+--------------+         +-------------------------+

| TCPServer |------->| UnixStreamServer  |

+--------------+         +-------------------------+

      |

      v

+---------------+        +---------------------------+

| UDPServer |------->| UnixDatagramServer |

+---------------+        +---------------------------+

 

以上服务器都应该是异步处理,SocketServer提供了ForkingMixIn 和 ThreadingMixIn类支持异步处理

These four classes process requests synchronously; each request must be completed before the next request can be started. This isn’t suitable if each request takes a long time to complete, because it requires a lot of computation, or because it returns a lot of data which the client is slow to process. The solution is to create a separate process or thread to handle each request; the ForkingMixIn and ThreadingMixIn mix-in classes can be used to support asynchronous behaviour.

 

 

Server创建

 

创建server服务需要下面3步

Creating a server requires several steps. 

First, you must create a request handler class by subclassing the BaseRequestHandler class and overriding its handle() method; this method will process incoming requests.

Second, you must instantiate one of the server classes, passing it the server’s address and the request handler class. 

Finally, call the handle_request() or serve_forever() method of the server object to process one or many requests.

 

BaseRequestHandler有2个子类,分别对应于不同的类型的Socket类型

 

+---------------------------+         +-----------------------------------+

| BaseRequestHandler |------->| DatagramRequestHandler  |

+---------------------------+          +---------------------------------+

      |

      v

+----------------------------------+

|  StreamRequestHandler     |

+----------------------------------+

 

 

 

 SocketServer TCP例子

 

Server:

 

import SocketServer


class TCPHandler(SocketServer.BaseRequestHandler):
    def handle(self):
        # self.request is the TCP socket connected to the client
        self.data = self.request.recv(1024).strip()
        print "{} wrote:".format(self.client_address[0])
        print self.data
        # just send back the same data, but upper-cased
        self.request.sendall(self.data.upper())


if __name__ == "__main__":
    HOST, PORT = "localhost", 9999

    # Create the server, binding to localhost on port 9999
    server = SocketServer.TCPServer((HOST, PORT), TCPHandler)

    # Activate the server; this will keep running until you
    # interrupt the program with Ctrl-C
    server.serve_forever()

 

 Client:

 

HOST, PORT = "localhost", 9999
#data = " ".join(sys.argv[1:])

# Create a socket (SOCK_STREAM means a TCP socket)
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
data = "hello world\n"
try:
    # Connect to server and send data
    sock.connect((HOST, PORT))
    sock.sendall(data)
    # Receive data from the server and shut down
    received = sock.recv(1024)
finally:
    sock.close()

print "Sent:     {}".format(data)
print "Received: {}".format(received)

 

 

 

 

分享到:
评论

相关推荐

    python基础之socket与socketserver.docx

    Python中的Socket和SocketServer是进行网络通信的基础工具,它们提供了创建和管理客户端-服务器应用程序的能力。Socket在计算机网络中扮演着重要角色,它是一个抽象层,允许程序通过网络发送和接收数据,就像电源...

    python网络编程socketserver[总结].pdf

    Python的网络编程主要依赖于socket库,而socketserver模块则为开发者提供了更加便捷的方式来构建网络服务器。`socketserver`简化了服务器的创建过程,通过预定义的类来处理TCP、UDP等各种类型的网络通信,同时也支持...

    Python网络编程 socketserver

    【Python网络编程 SocketServer】 在Python中,网络编程是一个重要的领域,SocketServer模块提供了创建服务器端应用程序的简便方式,支持TCP(传输控制协议)和UDP(用户数据报协议)等不同类型的网络通信。本节将...

    利用Python中SocketServer 实现客户端与服务器间非阻塞通信

    利用SocketServer模块来实现网络客户端与服务器并发连接非阻塞通信。 首先,先了解下SocketServer模块中可供使用的类: BaseServer:包含服务器的核心功能与混合(mix-in)类挂钩;这个类只用于派生,所以不会生成这...

    python SocketServer C++ 实现

    Python的SocketServer库为开发者提供了方便的服务器端编程接口,而C++作为底层系统编程的强大工具,也有其自身的socket接口。本文将深入探讨如何在C++中实现类似Python SocketServer的功能,并通过具体的测试代码来...

    Python Socket传输文件示例

    import socket,time,SocketServer,struct,os,thread\nhost='192.168.50.74' port=12307 s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) #定义socket类型 s.bind((host,port)) #绑定需要监听的I

    python网络编程socketserver宣贯.pdf

    Python的网络编程主要依赖于标准库中的`socket`和`socketserver`模块。`socket`模块提供了低级别的网络通信接口,而`socketserver`则在此基础上进行了封装,简化了网络服务器的开发流程,使得开发者可以更专注于处理...

    python socket 实现服务器与客户端多线程连接

    而socketserver是Python的一个内置库,它在socket基础上添加了多线程或多进程支持,简化了服务器端的编程工作。 实现多线程服务器的关键在于处理并发连接。当一个服务器接收到一个新的客户端连接请求时,通常会创建...

    Python实现socket非阻塞通讯功能示例

    Python是一种广泛用于网络编程的语言,而socket是非阻塞通信的基础。这篇文章会详细探讨如何使用Python实现socket非阻塞通信,并结合示例分析其原理、多线程以及客户端和服务器端的具体实现技巧。 首先,了解socket...

    利用python socket多线程开发FTP软件

    1、python socket编程介绍 2、利用python socket处理多个连接 3、利用python socket 模拟SSH协议1 4、利用python socket模拟SSH协议2 5、python socketServer多线程 6、利用python socketServer多线程开发FTP软件

    python socket C-S 模型例子

    Python的Socket库是进行网络通信的基础模块,它允许程序员创建客户端和服务器端的连接,实现C-S(客户端-服务器)模型。在这个例子中,我们将深入探讨如何使用Python Socket实现一个多线程服务器来同时处理多个...

    python socket server

    python socket server 小例子

    Python web与网络编程教程 使用Python进行socket编程 共18页.pdf

    三、Pythonsocket模块3.1、基本的Pythonsocket模块3.2、Socket模块3.3、SocketServer模块前提条件创建和销毁socketSocket地址服务器socket客户机socket流socketI/O数据报socketI/Osocket选项异步I/O四、构建一个...

    python_socket_server

    python socket 服务器端代码demon

    python如何使用socketserver模块实现并发聊天

    SocketServer是Python标准库中的一个模块,它提供了一个基础类来构建基于套接字(socket)的服务端程序。它抽象了服务器的基本操作,如接收客户端连接、处理请求等,使得开发者能够更专注于业务逻辑而不是底层的网络...

    python socket编程详细介绍.docx

    Python有两个主要的socket模块:Socket和SocketServer。Socket模块遵循标准的BSD Sockets API,适合进行基本的网络通信,而SocketServer模块则通过提供服务器端的基类,简化了网络服务器的实现。 首先,我们来看...

    Python socket处理client连接过程解析

    总结,Python的socket和socketserver模块提供了强大的网络通信功能。通过创建自定义的请求处理器和利用`ThreadingTCPServer`,我们可以实现并发处理多个客户端连接。在实际应用中,这样的设计可以大大提高服务器的...

    Python SocketServer通信框架项目实例

    Python SocketServer通信框架是Python标准库中的一个模块,它提供了基于TCP/IP协议的服务器端编程基础框架,可以方便地创建自定义的服务。本项目实例基于SocketServer,实现了长连接和多线程通信,同时处理了通信...

    Python3 Socket编程

    4. **SocketServer**:在更复杂的场景下,可能需要处理多个并发连接,Python的SocketServer模块提供了这样的功能。它可以创建服务器,自动处理来自多个客户端的连接请求,简化了多线程或多进程编程。 以下是一个...

    使用Python进行socket编程.pdf

    socket编程是网络通信的基础,Python通过其标准库中的`socket`模块提供了对网络通信的支持。 4. socket模块的使用 文件提到了`socket.socket(family, type)`用于创建socket,以及多种socket方法,包括`bind`用于...

Global site tag (gtag.js) - Google Analytics