用于构建i2p应用程序的现代异步库。

i2plib的Python项目详细描述


https://travis-ci.com/l-n-s/i2plib.svg?branch=masterLatest Read The Docshttps://codecov.io/github/l-n-s/i2plib/coverage.svg?branch=master

i2plib是用于构建i2p应用程序的现代异步库。

安装

pip install i2plib

要求:

  • python版本=3.5
  • 启用SAM API的I2P路由器

连接到远程I2P目标

importasyncioimporti2plibasyncdefconnect_test(destination):session_name="test-connect"# create a SAM stream sessionawaiti2plib.create_session(session_name)# connect to a destinationreader,writer=awaiti2plib.stream_connect(session_name,destination)# write data to a socketwriter.write(b"PING")# asynchronously receive datadata=awaitreader.read(4096)print(data.decode())# close the connectionwriter.close()# run event looploop=asyncio.get_event_loop()loop.run_until_complete(connect_test("dummy.i2p"))loop.stop()

接受I2P中的连接

importasyncioimporti2plibasyncdefaccept_test():session_name="test-accept"# create a SAM stream sessionawaiti2plib.create_session(session_name)# accept a connectionreader,writer=awaiti2plib.stream_accept(session_name)# first string on a client connection always contains clients I2P destinationdest=awaitreader.readline()remote_destination=i2plib.Destination(dest.decode().strip())# read for the actual incoming data from the clientdata=awaitreader.read(4096)print(data.decode())# send data backwriter.write(b"PONG")# close the connectionwriter.close()# run event looploop=asyncio.get_event_loop()loop.run_until_complete(accept_test())loop.stop()

服务器通道

向i2p公开本地服务,就像这样:

importasyncioimporti2plibloop=asyncio.get_event_loop()# making your local web server available in the I2P networktunnel=i2plib.ServerTunnel(("127.0.0.1",80))asyncio.ensure_future(tunnel.run())try:loop.run_forever()exceptKeyboardInterrupt:passfinally:loop.close()

客户端隧道

将远程I2P目标绑定到本地主机上的端口:

importasyncioimporti2plibloop=asyncio.get_event_loop()# bind irc.echelon.i2p to 127.0.0.1:6669tunnel=i2plib.ClientTunnel("irc.echelon.i2p",("127.0.0.1",6669))asyncio.ensure_future(tunnel.run())try:loop.run_forever()exceptKeyboardInterrupt:passfinally:loop.close()

更多示例

您可以在源存储库的docs/examples目录中看到更多演示应用程序

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

推荐PyPI第三方库


热门话题
java搜索具有外键的JPA实体的约定是什么?   java事务没有使用事务和嵌套方法的2个实例回滚   SpringBootJavaMessageFormat。使用umlauts格式(ä/ö/ü)   java如何通过字符串在sqlite中搜索列   JAVAlang.ClassNotFoundException:org。冬眠Hibernate4的例外情况   java消息正文在Gmail中被弄乱了   java Apache Ignite未使用空值更新缓存   Java正则表达式未捕获组   java onBackPressed();除非我叫super否则不行。onBackPressed();两次密码   java CustomAlertDialog在删除数据库记录后未完成其进程   C++中的迭代器(Stl)与java,是否存在概念上的区别?   Java在不知道字符编码的情况下将字节[]转换为字符串   来自本地WSDL文件的java Web服务客户端   java工具可用于在一个位置聚合所有项目相关信息   java在Netbeans中的maven项目中设置依赖项