Skip to content

Commit 93b2ab2

Browse files
committed
add some examples
1 parent b8b4498 commit 93b2ab2

3 files changed

Lines changed: 82 additions & 18 deletions

File tree

README.md

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,23 @@ Options:
2828
отправляет клиенту номер порта для приёма асинхронных сообщений коннектора(data port) и ожидает
2929
подключение на этом порту. Цикл приёма/отправки начинается после подключения на data port.
3030

31-
См. [client.py](examples/client.py) для примера клиентского приложения.
31+
### Примеры
32+
Запустите сервер
33+
```bash
34+
> txcproxy.exe -d <path/to/txmlconnector.dll>
35+
36+
Сервер запущен на 127.0.0.1:4242
37+
```
38+
Примеры в директории [examples](examples/) демонстрируют установку связи с сервером и
39+
особенности использования.
40+
> python examples/simple.py
41+
42+
Базовый пример использования, после подключения к серверу отправляет не требующую авторизации команду
43+
и ожидает ответ коннектора.
44+
45+
> python examples/connect.py <LOGIN> <PASSWORD>
46+
47+
Пример подключения к серверу Transaq(требуются логин и пароль).
3248

3349
### Альтернативы
3450
- [novikovag/TXCProxy](https://github.com/novikovag/TXCProxy) `C`
Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,27 @@
11
#!/bin/python
22
import socket
3+
import sys
34
from threading import Thread
45

6+
if len(sys.argv) < 3:
7+
print("Run as \npython connect.py <LOGIN> <PASSWORD>")
8+
sys.exit(0)
9+
510
addr = socket.gethostbyname("127.0.0.1")
611
port = 4242
712

8-
connect_cmd = b"""<command id="connect">
9-
<login></login>
10-
<password></password>
11-
<milliseconds>true</milliseconds>
12-
<autopos>false</autopos>
13-
<rqdelay>10</rqdelay>
14-
<host>tr1.finam.ru</host>
15-
<port>3900</port>
16-
</command>\0"""
17-
18-
print("connecting to proxy server")
13+
# 0. Connect to the server
14+
print("connecting to %s:%x" % (addr, port))
1915
cmd = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
2016
cmd.connect((addr, port))
2117

22-
# 1. Receive data port
18+
# 1. Receive 'data port'
2319
r = cmd.recv(32)
2420
dp = int.from_bytes(r, "little")
2521
print("< ", dp)
2622

27-
# 2. Connect to data port
28-
print("connecting to data stream")
23+
# 2. Connect to 'data port'
24+
print("connecting to %s:%x" % (addr, dp))
2925
rcv = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
3026
rcv.connect((addr, dp))
3127

@@ -35,11 +31,21 @@ def rcv_print_loop(rcv):
3531
if len(b) == 0:
3632
break
3733
else:
38-
print(b)
34+
print("rx: ", b)
3935

4036
Thread(target=rcv_print_loop, args=(rcv, )).start()
4137

38+
4239
# 3. Send command
43-
print("sending 'connect' command")
44-
cmd.sendall(connect_cmd)
40+
login, password = sys.argv[-2:]
41+
42+
connect_cmd = """<command id="connect">
43+
<login>%s</login>
44+
<password>%s</password>
45+
<host>tr1.finam.ru</host>
46+
<port>3900</port>
47+
</command>\0""" % (login, password)
48+
49+
cmd.sendall(connect_cmd.encode('utf-8'))
4550
print("< ", cmd.recv(256))
51+

examples/simple.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
#!/bin/python
2+
import socket
3+
import time
4+
from threading import Thread
5+
6+
addr = socket.gethostbyname("127.0.0.1")
7+
port = 4242
8+
9+
# 0. Connect to the server
10+
print("connecting to %s:%x" % (addr, port))
11+
cmd = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
12+
cmd.connect((addr, port))
13+
14+
# 1. Receive 'data port'
15+
r = cmd.recv(32)
16+
dp = int.from_bytes(r, "little")
17+
print("< ", dp)
18+
19+
# 2. Connect to 'data port'
20+
print("connecting to %s:%x" % (addr, dp))
21+
rcv = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
22+
rcv.connect((addr, dp))
23+
24+
def rcv_print_loop(rcv):
25+
while True:
26+
b = rcv.recv(1 << 20).decode()
27+
if len(b) == 0:
28+
break
29+
else:
30+
print("data: ", b)
31+
32+
Thread(target=rcv_print_loop, args=(rcv, )).start()
33+
34+
35+
# 3. Send command
36+
conn_ver = b"""<command id = \"get_connector_version\"/>\0"""
37+
while True:
38+
cmd.sendall(conn_ver)
39+
print("resp: ", cmd.recv(256))
40+
time.sleep(2)
41+
42+

0 commit comments

Comments
 (0)