轻松创建客户端套接字。
ezsocket的Python项目详细描述
python模块“ezsocket”提供了一种创建客户端的简单方法 大多数常见情况下的套接字,只需一个简单的函数调用。
随着python 3.2/3.4的发布,python标准库更新了 socket模块并添加了一组实用函数 有插座就容易多了。这些更改还允许单个 创建在几乎任何情况下都能工作的客户端套接字的方法, 并在本模块中实现。
创建套接字
创建连接到给定服务的客户端套接字。
需要以下位置参数:
- 主机
- 主机名(例如“google.com”,8.4.8.4,…)
- 端口
- 要连接到的端口(例如8888、“http”、“https”、“dns”…)
以下非位置参数是可选的:
- tls
- 启用TLS?(默认值:false)
基类ezsocket.ezsocket exception可能引发异常 以下情况:
- ezsocket.connectionfailedexception在任何情况下都可能引发
- ezsocket.tlsfailedexception如果tls=true,则可能引发
示例
#!/usr/bin/env python# -*- coding: utf-8 -*-""" example.py Simple client that connects to https://python.org, sends a HTTP request, and prints the response. The magic happens in the "connect"-method. """importezsocketasezsclassExampleClient:def__init__(self):self.buffer_in=b""defconnect(self):try:self.socket=ezs.create_socket('www.python.org','https',tls=True)exceptezs.EzsocketExceptionase:# do something with e, or raise e againraiseedefsend_request(self,msg):self.socket.send(msg)defwait_for_response(self):whilelen(self.buffer_in.split(b"\r\n\r\n",maxsplit=1))<2:self.buffer_in+=self.socket.recv(1024)defget_next_response(self):(r,self.buffer_in)=self.buffer_in.split(b"\r\n\r\n",maxsplit=1)returnrdefclose(self):ifself.socket:self.socket.close()self.socket=Noneif__name__=="__main__":client=ExampleClient()client.connect()client.send_request(b"HEAD / HTTP/1.1\r\n"b"Host: www.python.org\r\n"b"\r\n")client.wait_for_response()r=client.get_next_response()forlineinr.split(b"\r\n"):print(line)client.close()