轻松创建客户端套接字。

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()

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Clojure关键字在内存中的大小是多少?   Java中有固定长度的通用数组对象吗?   PostgreSQL:通过Java更新我的用户表   错误:使用java解析xml   java Json显示列表中对象的名称   java比较JodaTime时区   与JAVA中的API和包的区别?   java的int值在for循环中不改变   谷歌应用引擎中的java RSA   迁移到spring 5后出现java非法字符错误   java Websphere管理控制台不工作   JavaGSON如何始终在json中包含毫秒?   带有空格和双引号的windows Java ProcessBuilder命令参数失败   java错误:重复的zip条目[43.jar:org/apache/http/annotation/NotThreadSafe.class]