如何在stunnel中使用Python套接字?

2024-07-03 05:51:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图通过stunnel实现一个TCP套接字,但不知道如何捕获服务器响应。我的stunnel配置文件如下所示:

[Coinbase]
client = yes
accept = 127.0.0.1:4197
connect = fix.gdax.com:4198
verify = 4
CAfile = /etc/fix.gdax.com.pem

Python的代码是:

^{pr2}$

无论我通过套接字发送什么消息(包括服务器所在的那些消息fix.gdax.com网站print语句的结果总是字节形式的空字符串:

b''

特技日志如下:

2017.11.02 20:49:58 LOG5[7]: Service [Coinbase] accepted connection from 
127.0.0.1:65205
2017.11.02 20:49:58 LOG5[7]: s_connect: connected 52.86.60.82:4198
2017.11.02 20:49:58 LOG5[7]: Service [Coinbase] connected remote server from 
192.168.0.14:65206
2017.11.02 20:49:58 LOG5[7]: Certificate accepted at depth=0: C=US, 
ST=California, L=San Francisco, O="Coinbase, Inc.", CN=*.gdax.com
2017.11.02 20:50:06 LOG3[7]: readsocket: Connection reset by peer 
(WSAECONNRESET) (10054)
2017.11.02 20:50:06 LOG5[7]: Connection reset: 37 byte(s) sent to TLS, 0 
byte(s) sent to socket

我的解释是,消息正常,证书有效等等,但我不知道如何接收服务器发回的数据。。。非常感谢任何帮助!我对TCP&SSL还不熟悉,所以如果术语有误,我深表歉意。在


Tags: from服务器com消息connectservicegdaxconnection
1条回答
网友
1楼 · 发布于 2024-07-03 05:51:53

在接收插座如果远程方关闭了连接,()将返回空字符串。在

似乎您正在尝试连接到修复网关。如果FIX服务器没有收到正确的登录消息,那么关闭连接而没有任何响应是非常标准的行为。您发送的第一条消息必须是LOGON-类似于:

8=FIX.4.4|9=74|35=A|34=1|49=SenderCompIdGoesHere|52=20171103-01:15:00.000|56=TargetCompIdGoesHere|98=0|108=30|10=144

其中“|”是SOH(ASCII码01)字符。如果您不发送此消息,或者其中有任何错误(比如CompIDs或FIX版本、时间戳等),服务器通常只会关闭连接(使它有点猜测工作,以找出您发送的错误)。在

另外,您只能发送FIX协议消息,您尝试使用的“GET…”字符串是HTTP协议的一部分-FIX服务器无法识别它。在

相关问题 更多 >