【发布时间】:2018-04-18 18:46:39
【问题描述】:
我正在运行 Delphi 10.2 Tokyo 的示例网络共享应用程序
C:\Users\Mike\Documents\Embarcadero\Studio\Projects\Tethering\PhotoWall\Mobile
在 Windows 和 iPad 上正常运行时,应用程序可以正常运行但无法正常运行。
当使用调试器(在 Windows 和 iPad 上)运行时,它会收到如下错误消息:
调试器异常通知
Project MobilePhotoApp 引发异常类 EIdSocketError,消息为 'Socket Error #48 地址已在使用中。'。
Project MobilePhotoApp 引发异常类 EIdCouldNotBindSocket 并带有消息“无法绑定套接字。地址和端口已在使用中。'。
【问题讨论】:
-
它似乎正在尝试使用端口 2020。您必须已经有另一个应用程序使用该端口。奇怪的是,这来自 Indy,但我在这些使用 Indy 的示例应用程序中都没有看到任何内容。
-
我特别问,因为像你的问题中的“调试器异常通知”没有出现,它是调试器内部使用的东西(并且可以为异常类型禁用)。如果不处理触发此内部调试器通知对话框的异常,通常会导致一个实际的错误对话框,用户可以看到该对话框。而且这里似乎不见了。
-
实际上看起来
IPPeer内部使用了Indy。此外,我也找不到引用端口2020的位置。 -
找到了。似乎 Delphi 中的网络共享库硬编码了这个端口,还有一些其他的。
System.Tether.NetworkAdapter具有引用这些端口号的TTetheringNetworkAdapterCommon。 -
我想在您的场景中以当前状态使用这个网络共享库是绝对不可能的,因此对您的问题 +1。有人在设计时做出了一些糟糕的决定。
标签: delphi exception-handling tethering