python异步tcp服务器和客户端

pysoltcp的Python项目详细描述


版权所有(C)1989, 1991免费软件基金会,BR/> 51富兰克林街,第五楼,波士顿,MA 02110-1301美国。但不允许更改。

preamble


大多数软件的许可证旨在剥夺您共享和更改它的自由。相比之下,GNU General Public
许可证旨在保证您可以自由共享和更改
软件,以确保该软件对所有用户都是免费的。这个
通用公共许可证适用于大多数自由软件
基金会的软件和其他作者提交到
的程序。(其他一些免费软件基金会的软件是由
GNU较低的通用公共许可证覆盖的)。你也可以把它应用到
你的程序。
BR/>当我们谈到自由软件时,我们指的是自由,而不是BR/>价格。我们的通用公共许可证旨在确保您可以自由分发免费软件的副本(如果您愿意,还可以为
此服务收费),您可以接收源代码,如果您愿意,也可以获取源代码。您可以更改软件或在新的免费程序中使用它的一部分;并且您知道您可以做这些事情。

为了保护您的权利,我们需要制定限制,禁止任何人拒绝您这些权利或要求您放弃这些权利。
如果您分发软件的副本或修改软件,这些限制将转化为您的某些责任。

如果您分发这样一个程序的副本,无论是免费的还是收费的,您必须给予收件人您拥有的所有权利。您必须确保他们也能接收或获得
源代码。您必须向他们展示这些条款,以便他们知道自己的权利。

保护和我们的,我们要确保
每个人都明白,没有保证这个免费的
软件。如果软件被其他人修改并传递,我们希望它的接收者知道他们所拥有的不是原始的,所以其他人带来的任何问题都不会影响原始作者的声誉。任何自由程序都会不断受到软件专利的威胁。我们希望避免这样的危险,即一个免费的
程序的再分配者将单独获得专利许可,实际上使
程序成为专有程序。为了防止这种情况发生,我们已经明确表示,任何
专利都必须获得许可,供所有人免费使用或根本不获得许可。

复制的确切条款和条件,分发和
修改如下。

复制、分发和修改的条款和条件


0。本许可证适用于任何包含版权持有人发出的通知的程序或其他作品,该通知表示可以根据本通用公共许可证的条款进行分发。下面的"程序"是指任何此类程序或作品,"基于程序的作品"是指程序或版权法下的任何衍生作品:
也就是说,包含程序或其一部分的作品,
逐字或经修改和/或翻译变成另一种语言。(以下,翻译包括但不限于"修改"一词)每个被许可人被称为"您"。


除复制、分发和修改以外的活动不在本许可范围内;它们不在本许可范围内。运行程序的行为不受限制,只有当程序的内容构成了基于程序的工作(独立于通过运行程序所做的工作)时,程序的输出才会被覆盖。
这是否正确取决于程序的工作。


1。您可以在收到程序源代码时,在任何媒体上复制和分发该程序的
源代码的逐字副本,只要您
在每个副本上显著且适当地发布适当的
版权声明和免责声明;保留所有提及本许可证和无任何担保的
通知的完整性;
并将本许可证的副本连同程序一起交给程序的任何其他接收者。

您可以选择提供保修保护,以换取费用。


2.您可以修改您的一份或多份程序副本或其任何部分,从而形成基于程序的作品,并根据上述第1节的条款复制和分发这些修改或作品,如果您也满足所有这些条件:

a)您必须使修改后的文件带有明显的通知
,说明您更改了文件和任何更改的日期。

b)您必须导致您分发或发布的任何工作,在
中,全部或部分包含或派生自程序或其任何
部分,根据本许可条款,将作为一个整体免费许可给所有第三方。

交互使用时,您必须使其打印或显示
声明,包括适当的版权声明和
声明不存在任何保证(或者,声明您提供了
保修),并且用户可以在
这些条件下重新分发程序,并告诉用户如何查看此
许可证的副本。(例外情况:如果程序本身是交互式的,但
通常不打印此类公告,则基于
程序的工作不需要打印公告。)

如果
该作品中可识别的部分不是从程序中派生的,
并且可以被合理地认为是独立和独立的作品,那么当您将其作为独立作品分发时,本许可证及其条款不适用于那些
部分。但是,当您将相同的部分作为一个整体(基于程序的工作)进行分发时,整个部分的分发必须基于此许可证的条款,其他许可证持有者的权限扩展到整个,从而扩展到每个部分,而不管是谁因此,本节的目的并不是要求权利或对完全由您编写的作品进行抗争,而是行使控制衍生作品或基于程序的集体作品分发的权利。仅将不基于程序的其他工作与存储或分发介质卷上的程序(或基于程序的工作)聚合在一起,不会将其他工作置于本许可证的范围内。您可以按照上述第1节和第2节的条款,以目标代码或可执行格式复制和分发程序(或基于该程序的作品,第2节的
),但您也必须执行以下操作之一:

a)随附完整的相应机器可读的
源代码,必须根据上述第1节和第2节的条款在通常用于软件交换的介质上分发;或者,


b)附带一份有效期至少为三年的书面报价,以提供ird方,收取的费用不超过实际执行源代码分发所需的费用,以及相应源代码的完整机器可读副本,根据上述第1节和第2节的规定,在通常用于软件交换的介质上进行
分发;或者,


c)随附您收到的有关分发相应源代码的报价信息。(此选项仅允许用于非商业性分发,并且仅当您
收到目标代码或可执行格式的程序,并提供了
,根据上述b小节的规定。)


作品的源代码是指对其进行修改的首选作品形式。对于可执行工作,完整的源代码意味着它包含的所有模块的所有源代码,加上任何相关的接口定义文件,以及用于控制可执行文件的编译和安装的脚本。但是,作为一个特殊的例外,分发的源代码不需要包含任何与运行可执行文件的
操作系统的主要组件(编译器、内核等)正态分布(以源代码或二进制形式)的内容,除非该组件本身与可执行文件一起发布。


代码,即使第三方没有被迫将源代码与目标代码一起复制。除非本许可明确规定,否则您不得复制、修改、再授权或分发程序。以其他方式复制、修改、再授权或分发程序的任何尝试均无效,并将自动终止您在本许可下的权利。
但是,从您处收到本许可下的副本或权利的一方,只要其在本许可下的许可证没有终止这些
缔约方仍然完全遵守。您无需接受此许可证,因为您尚未签署此许可证。但是,没有其他东西授予您修改或分发程序或其派生作品的权限。如果您不接受本许可证,这些行为将被法律禁止。因此,通过
修改或分发程序(或基于
程序的任何工作),您表示您接受此许可,并
其复制、分发或修改基于此程序或工作的所有条款和条件。每次您重新分发程序(或基于
程序的任何工作)时,接收者都会自动从
原始许可方处获得许可,根据这些条款和条件复制、分发或修改程序。您不得对接收者行使本授权的权利施加任何进一步的限制。
您不负责强制第三方遵守本授权。


7.如果由于法院判决或专利侵权指控或任何其他原因(不限于专利问题),
对您施加的条件(无论是通过法院命令、协议或
其他方式)与本许可证的条件相抵触,他们不会原谅您根据本许可证的条件。如果您不能
分发以同时满足您在本
许可证下的义务和任何其他相关义务,则您
可能根本不分发程序。例如,如果专利
许可证不允许
所有直接或间接通过您接收副本的人免费重新分发程序,则
您可以同时满足该许可证和本许可证的唯一方法是
完全不分发程序的一部分。

第节诱使您侵犯任何
专利或其他产权主张,或对任何
此类主张的有效性提出质疑;本节的唯一目的是保护由公共许可实践实施的
自由软件分发系统的
完整性。许多人依靠
系统的一致应用,对通过该系统分发的各种软件作出了慷慨的贡献;由作者/捐赠者决定是否愿意
通过任何其他系统分发软件,并且被许可方不能
强制实施该选择。


本节旨在彻底说明被认为是
本许可证其余部分的结果。


8。如果程序的分发和/或使用在
某些国家受到专利或版权接口的限制,将程序置于本许可证下的原始版权所有者可以添加一个明确的地理分布限制,不包括那些国家,因此只允许在不包括这些国家的国家内或之间进行分布。在这种情况下,本许可证包含
的限制,就好像写在本许可证正文中一样。

<9。自由软件基金会可以不时发布通用和公共许可证的修订版和/或新版本
。这些新版本在精神上与当前版本相似,但可能在细节上有所不同,以解决新的问题或关注点。


每个版本都有一个不同的版本号。如果程序
指定了该许可证的版本号,适用于它和"任何
后版本",您可以遵循以下条款和条件:BR/>任一版本或自由版本
软件基金会发布的任何后续版本。如果程序未指定版本号为BR/>此许可证,则可以选择自由软件发布的任何版本
基金会。
BR/> 10。如果您希望将程序的某些部分合并到其他分发条件不同的免费
程序中,请写信给作者
请求许可。对于免费的
软件基金会享有版权的软件,请写信给自由软件基金会;我们有时会对这一例外作出例外。我们的决定将遵循以下两个目标:
保持我们的自由软件的所有衍生产品的自由状态,
促进软件的共享和重用。

不保证

11。由于该计划是免费许可的,因此在适用法律允许的范围内,对该计划不作任何保证。除非
另有书面声明,否则版权所有人和/或其他方
按"原样"提供程序,不提供任何形式的保证,无论是明示的还是默示的,包括但不限于
适销性和特定用途适用性的默示保证。您将承担项目质量和性能的全部风险。如果
程序被证明有缺陷,您将承担所有必要的维修、修理或纠正费用。


12。在任何情况下,除非适用法律要求或书面同意,
任何版权持有人或任何其他可能修改和/或
按上述许可重新分发程序的一方,均不对您承担损害赔偿责任,
包括任何一般的、特殊的,由于使用或无法使用程序而引起的附带或间接损害(包括但不限于数据或数据不准确的丢失或
您或第三方或程序未能与任何其他
程序一起运行,即使该持有人或另一方已被告知存在此类损害的可能性。


如果你想让它对公众有最大的用处,最好的办法就是让它成为每个人都可以根据这些条款重新发布和更改的免费软件。最安全的做法是将它们附加到每个源文件的开头,以最有效地传达保修的排除;每个文件至少应具有"版权"行和指向完整通知所在位置的指针。

<;其中一行给出程序的名称和简要说明。>;
版权(C)<;年份>;


此程序是免费软件;您可以根据
发布的GNU通用公共许可证的条款重新分发和/或修改它。自由软件基金会;许可证的第2版或任何更高版本。

特殊目的。有关详细信息,请参阅GNU通用公共许可证。

MA 02110-1301 USA.


还可以添加有关如何通过电子邮件和纸质邮件与您联系的信息。


如果程序是交互式的,则在以交互式模式启动时,使其输出类似于这样的简短通知:


gnomovision version 69,版权所有(C)作者年份名
gnomovision绝对不提供任何保证;有关详细信息,请键入"show w"。
这是一个免费软件,欢迎您在特定条件下重新发布它;键入"show c"获取详细信息。

当然,您使用的命令可能会被称为"show w"和"show c"之外的其他命令;它们甚至可以是鼠标点击或菜单项——任何适合您的程序。

如有必要,签署程序的"版权免责声明"。下面是一个示例;更改名称:

yoyodyne,inc.,特此声明对james hacker编写的程序
"gnomovision"(在编译器中传递)不享有任何版权。

<;ty coon的签名>;,1989年4月1日
ty coon,副总裁

此通用公共许可证不允许将您的程序并入
专有程序。如果您的程序是一个子程序库,您可能会认为允许将专有应用程序与
库链接更有用。如果这是您想要做的,请使用GNU Lesser General
公共许可证而不是此许可证。


描述:PysolTCP
==


欢迎使用Pysol


版权所有(C)2013/2017 Laurent Labatut/Laurent Champagnac

pysoltcp是一组python异步tcp服务器和客户端。

服务器可以在分叉模式下工作,以跨多个CPU进行扩展。

它支持:
-异步TCP套接字(每个套接字具有底层异步读/写循环、发送队列和接收回调)
-SSL套接字
-socks5代理(通过dante测试)
-TCP keepalive
-每个套接字的绝对和相对套接字空闲读写超时,via gevent co-routine schedules(无全局控制线程)
-ssl握手超时
-server forking
-server context factory用于服务器端协议处理
-client derivation with _on_receive override用于客户端协议处理
-通过meters(pysolmeters)进行检测


请注意,根据设计,不支持同步TCP套接字。

注意,您可能每字节(在最坏的情况下)接收协议输入(通过接收回调)。
您的协议解析器必须准备好以正确的方式处理这个问题。

UnitTests实现了客户端/服务器乒乓文本协议(\n分隔符)。


对于客户端,请参阅:
-pysoltcp_test.tcpapi.ping protocol.client.pingsimpleclient.pingsimpleclient

对于服务器端,请参阅:
-pysoltcp_test.tcpapi.pingprotocol.server.pingservercontextfactory.pingservercontextfactory
-pysoltcp_test.tcpapi.pingprotocol.server.pingservercontext.pingservercontext

对于单元测试。

有一些例外)
-我们使用360个字符的右边距(请不要告诉我80个字符)
-所有unittest文件必须以"test"或"test"开头,应实现安装和拆卸方法
-所有测试都必须适应任何运行目录
-整个项目由gevent支持(http://www.gevent.org/)
-我们使用docstring(:return,:rtype,:param,:type etc…),它们是必需的
-我们使用pycharm"noinspection",可以随意使用它们
-Debian 8 Jessie或更高版本,x64,Python 2.7





==


要运行unittests,您需要:

-socks5 proxy已安装并准备就绪(您可以使用Dante)。使用端口127.0.0.1:1080,无凭据。
-可用的TCP侦听端口3201
-高级单元测试(默认禁用)需要经过优化的操作系统和TCP堆栈


许可证
====


此程序是免费软件;您可以重新分发它和/或BR/>根据自由软件基金会发布的GNU通用公共许可证BR/>的条款修改它;许可证的版本2 BR/>或(由您选择)任何更高版本。

本程序的发布目的是希望它会有用,
但没有任何保证;甚至没有针对特定用途的适销性或适用性的暗示保证。详情请参阅
GNU通用公共许可证。
BR/>您应该已经收到了GNU通用公共许可证的BR/>连同这个程序;如果没有,请写信给自由软件< BR/>基金会,Inc.,波士顿第五楼富兰克林街51号。MA 02110-1301,美国ense::osi已批准::gnu通用公共许可证v2(gplv2)
分类器:操作系统::posix::linux
分类器:编程语言::python
分类器:主题::软件开发::库
分类器:自然语言::英语

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

推荐PyPI第三方库


热门话题
jstl中循环内部的java方法   java如何以编程方式查找iOS应用程序的堆内存?   java JPA列注释   http Java在Web浏览器中显示HttpResponse的内容   ssl Java如何接受我的自签名证书而不必将其添加到Java信任库   java解析bufferedReader数据,在某些字符处停止   java将具有多个属性的对象映射到另一个对象,然后收集到列表   java是否可以将抽象方法的返回类型设置为与类相同?   java Android导航抽屉,带有菜单图标而非后退按钮   如何在JavaSpringMVC中防止会话重放攻击?   是VB。NET SmtpClient API受限于Java SendMail?   跨多线程/节点的java会话管理   来自Eclipse的java maven项目   使用已解析Java DOM XML中的元素添加新元素