- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个带有 TIdSMTPServer 和 TIdPOP3Server 的邮件服务器,它在 Windows 下的 lazarus 中运行良好,但是如果我尝试在 linux 下启动我的程序,我会尝试:
SMTPServer.Active := True;
POP3Server.Active := True;
我收到此错误消息:“无法绑定(bind)套接字。地址和端口已在使用中。”我尝试在控制中心禁用端口 25 和 110,并在终端中禁用一些命令,但没有任何帮助。有人可以提示我如何解决这个问题吗?
最佳答案
这是旧版 Indy 10 中的一个已知问题,已在 6 个月前在 Indy SVN 的修订版 5066 中修复。
如果服务器激活时服务器的 Bindings
集合为空,Active
属性 setter 会创建一个默认的 IPv4 绑定(bind),如果操作系统支持,还会创建一个默认的 IPv6 绑定(bind).两个绑定(bind)都绑定(bind)到所有本地 IPv4/IPv6 地址上的相同 DefaultPort
。将单独的 IPv4/IPv6 套接字绑定(bind)到相同的 IP:Port 在 Windows 上工作,它愉快地分别管理 IPv4 和 IPv6,但它在 Linux 和 Android(可能还有所有其他 *Nix 系统)上不起作用,这就是为什么你得到“已在使用”错误 - IPv6 绑定(bind)失败,因为 IPv4 绑定(bind)已在使用 IP:端口。
为避免错误,您可以:
升级到最新的 SVN 快照,它不会在 Linux 和 Android 上创建双重 IPv4/IPv6 默认绑定(bind)。
激活服务器时,确保 Bindings
集合不为空。根据需要明确指定您自己的绑定(bind)。
关于linux - TIdSMTPServer 和 TIdPOP3Server 无法在 UBUNTU LINUX 中启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23088378/
我是一名优秀的程序员,十分优秀!