我有一个带有TIdSMTPServer和TIdPOP3Server的邮件服务器,它在windows下的lazarus中工作正常,但如果我尝试在linux下启动我的程序,我会尝试:
SMTPServer.Active := True;
POP3Server.Active := True;
我收到此错误消息:“无法绑定套接字。地址和端口已在使用中。”我尝试禁用控制中心的端口25和110以及终端中的一些命令,但没有任何帮助。有人能给我一个如何解决这个问题的提示吗?
答案 0 :(得分:1)
这是Indy 10版本中的一个已知问题,已于6个月前在Indy的SVN修订版5066中修复。
如果服务器激活时服务器的Bindings
集合为空,则Active
属性设置器会创建默认的IPv4绑定,并且如果操作系统支持,则创建默认的IPv6绑定。两个绑定都绑定到所有本地IPv4 / IPv6地址上的相同DefaultPort
。将单独的IPv4 / IPv6套接字绑定到同一IP:端口适用于Windows,它可以分别管理IPv4和IPv6,但它不适用于Linux和Android(可能还有其他所有* Nix系统),这就是为什么你得到的"已经在使用"错误 - IPv6绑定失败,因为IPv4绑定已在使用IP:端口。
为避免错误,您可以:
升级到最新的SVN快照,该快照不会在Linux和Android上创建双IPv4 / IPv6默认绑定。
确保激活服务器时Bindings
集合不为空。根据需要明确指定您自己的绑定。