socket api
Project description
简介
mini-socket 提供了一个简易版本的多连接socket.
连接
Basic
简单的连接方式是:
Machine A: 挂服务端; Machine B: 挂客户端. A/B 属于同局域网.
B 发数据 -> A 收并记录, 告知B已收到 -> 连接关闭
B 请求数据 -> A 收到请求, 查找并发数据 -> B 收到数据, 并告知A已收到 -> 连接关闭
Mid
在一些情况下, 如由于安全问题, 可能没办法暴露相关端口, 导致 A/B 无法连接.
建立一个中间连接, Machine C, 用于连接A B .
中转连接方式:
Machine C: 挂服务端; Machine A/B: 挂客户端.
收发数据和 basic 相同.
一些项目使用的情况不同, 需要解析收发数据的形式.
server.MidServer 是为该方法的数据解析方式, 需要别解析方式在server.py 里面加.
Usage
挂服务端:
python echo_server.py ${IP}$ ${PORT}$
IP: 局域网下ip or localhost 都可以
客户端:
python echo_client.py ${IP}$ ${PORT}$ ${TYPE}$ ${CONTENT}$
TYPE: 请求数据 用 search ; 发数据 非 search 的任何字符都可以.
跨机延时测试
例子: 以basic 的方式为例.
machine A: 挂server,用于测延时
# global vars
HOST = "10.130.19.34"
PORT = 7788
python echo_server.py $HOST $PORT.
A B 能正常通信的情况下:
Machine B: 挂client, 用于跑search代码.
先不管search, 先说一下相关的数据处理.
python echo_client.py $HOST $PORT net '32_32_32_128_3_3_3_3'
B向A发了网络的结构数据, A中需要测改网络的延时, 在demo中返回了一个随机数, 实际中需要手动改一下相关代码.
A完成了延时测试, B可以query 延时结果.
python echo_client.py $HOST $PORT search '32_32_32_128_3_3_3_3'
以上完成了一次网络延时测试.
在search 中, 基本逻辑也是这样的.
不同的地方在于: 在发送网络后, B不知道A何时完成测试, 会一直query, 如果A没有完成, 返回的字符会带"NO", 以此作为是否A是否完成的flag .
from minisocket.client import Client
# sending
for i, net in enumerate(net_list):
assert isinstance(net, dict)
str_net = dict2str(net)
clinet = Client(host, port, 'net', str_net)
client.run()
# send -> query(waiting)
while True:
client = Client(host, port, 'search', str_net)
client.run()
if "No" not in client.recv_info:
# finished flag
lat = client.recv_info
net["tlats"] = float(lat)
break
changelog
v0.0.1: demo 使用的版本, 也是detsearch 中使用的版本.
client使用 search 来获取信息, 其他关键字来传输信息.
v0.0.2: 当前开发的版本
TODO
- add quiet mode
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file minisocket-0.0.2.tar.gz.
File metadata
- Download URL: minisocket-0.0.2.tar.gz
- Upload date:
- Size: 11.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.0 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.7.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5f1ab9f9e0831c33e333a078603285429bb3169c7e62fd9bf095f7ff619411f7
|
|
| MD5 |
375c510f6a93d5e531fe8fb632cf1107
|
|
| BLAKE2b-256 |
ace7bc7e86537018ea73aa0525f0e2991724e48bf69beccf2bb34ae044ace1c5
|