首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从单个套接字连接中分离出连接

从单个套接字连接中分离出连接
EN

Server Fault用户
提问于 2023-05-11 22:00:48
回答 1查看 59关注 0票数 0

我有一个旧的遗留应用程序,我正试图与我们的半现代网络工作。此应用程序以HTTP请求的形式发送日志消息(每个请求一个日志),但通过一个TCP连接发送。如果TCP连接死了,日志就会被弄乱,因为它们没有队列。

我决定使用socat尝试打开TCP会话,同时将另一端的HTTP请求中断以供进一步处理。我有这样的事情:

代码语言:javascript
运行
复制
socat tcp-listen:8888 tcp-connect:logserver:80

问题在于,当侦听“logserver”的web服务器从socat接收HTTP连接时,它会撕毁其TCP连接,从而导致套接字撕毁应用服务器希望打开的侦听套接字。

我如何使socat在上行端重新连接,然后继续从侦听器那里推送数据?

我试着用“叉子”来听,但这仍然会破坏连接。我几乎想在tcp连接端添加“叉”,但这似乎是不允许的。

EN

回答 1

Server Fault用户

发布于 2023-05-12 11:20:08

在Socat命令的顶部:“当其中一个流有效地到达EOF时,关闭阶段开始。Socat将EOF条件传输到另一个流(…)。”。寻找"EOF“在这方面找到更有帮助的提示。

因此,如果您想让socat保持侦听功能,那么添加fork,reuseaddr

如果日志服务器没有可靠的应答,您可以使用例如retry,interval=.2,forever重试socat连接。

代码语言:javascript
运行
复制
socat tcp-listen:8888,fork,reuseaddr tcp-connect:logserver:80,retry,interval=.2,forever

我还喜欢运行带有socat -d -d -d的套接字,以便在尝试让它们正常工作的同时调试它们。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1130955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档