Avira防病毒软件将listen功能检测为后门模型。

3

函数

listen( ListenSocket, SOMAXCONN )

被Avira杀毒软件检测为后门模型。

如何在没有listen函数的情况下编写小型客户端/服务器应用程序?

有没有办法做到这一点?

4个回答

2
如果您需要接受连接,那么不,您不能在没有调用 listen 的情况下这样做。如果您可以将应用程序变成客户端,并在其他地方运行服务器,则您的客户端可以连接到服务器,服务器可以作为其他客户端连接的代理。
无论如何,我不会担心这个问题。如果您正在运行一个希望能够从其它机器连接到的服务器,则您的文档将必须解释如何打开防火墙端口等信息,因此只需添加详细说明如何将该应用程序从防病毒应用程序中排除即可。
此外,您的应用程序正在接受来自外部源的连接,因此防病毒应用程序正确地警告用户。您需要教育用户,因为您的应用程序由于某种有效的原因而在进行连接。如果您不想向用户解释,那么,在我看来,您正在编写一个后门 ;)

我不太好,写不出后门 :) 我正在学习Tanenbaum的经典著作,试图根据书中所解释的代码编写一个小应用程序,但是Avira不喜欢它... 无论如何,你是对的,阻止应用接受连接以确保安全问题是很好的。谢谢Len! - Phill

0

卸载 Avira 杀毒软件 ;-)

服务器按定义监听传入的连接,而客户端则启动与服务器的连接。在 TCP/IP 网络中,服务器通过 bind()listen() 绑定和监听套接字来实现这一点。


0

Avira充斥着各种虚假阳性,这些都很容易绕过。尝试将listen存储到函数指针中并调用它。这可能会起作用。


0
如果您正在处理TCP连接并且知道连接来自谁/哪里,并且有第三方可以告诉您何时将尝试连接,则双方同时connect对彼此进行验证是有效的。这样做可以协商连接而不需要任何一方侦听。如果涉及NAT,则这不是一个好的解决方案,需要更复杂的实现,但如果客户端和服务器在局域网上,则这是可能的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接