将套接字连接到环回远程端点,同时绑定到 LAN 源地址

     2023-02-21     282

关键词:

【中文标题】将套接字连接到环回远程端点,同时绑定到 LAN 源地址【英文标题】:Connect socket to loopback remote endpoint while bound to LAN source address 【发布时间】:2014-01-02 16:15:35 【问题描述】:

我正在寻求一些帮助,以了解如何将出站套接字连接到 127.x.x.x 环回子网上的目标 IP,同时绑定到分配给本地计算机的“真实”IP。

我无法将套接字绑定到本地端点 10.0.0.1(工作站的唯一非环回 IPv4 地址)并连接到地址为 127.4.5.6 的“远程”服务器(正在监听)。我看到 winsock 错误 10049 (WSAEADDRNOTAVAIL) 并且 .net 框架出现“请求的地址在其上下文 127.4.5.6:50000 中无效”

详情。

我有一个连接到远程服务器的本地套接字。我必须将我的套接字的源地址绑定到特定的本地地址。这是因为运行套接字的机器可能有许多可用地址,但只有一个源 IP 地址被正确 NAT,以便远程服务器信任它。我无法将本地套接字绑定到任何旧的本地地址,因为操作系统可能会选择一个不是 NAT 的地址,因此远程服务器不喜欢源地址。

功能上这一切都很好。

我正在尝试对其进行单元测试。由于无法模拟和子类化套接字,因此我的单元测试生成了一个本地 EXE,它充当远程服务器,侦听特定的环回地址(在命令行参数中定义),例如 127.4.5.6。然后我可以将我的主程序连接到那个“远程”地址 127.4.5.6,而源绑定到 127.1.2.3。这一切都很好。

但我想进行更改以允许假服务器(EXE)仍然在 127.4.5.6 上侦听,同时强制正在单元测试的出站套接字在本地绑定到 10.0.0.1(工作站的 LAN IP)而不是127.1.2.3。 Windows 不喜欢它——它会抛出 Winsock 10049 错误,表示该地址在其上下文中无效。

在本地绑定到常规 LAN 地址的本地端点时,如何连接到环回地址的远程端点?

谢谢

【问题讨论】:

【参考方案1】:

我之前在微软论坛上问过这个问题。这发生在 Microsoft 的新 TCPIP 实现上(所有操作系统上的 IPv6,以及 Vista 和更高版本上的 IPv4)。 环回到非环回应该可以在 XP over IPv4 上正常工作。

有关 Microsoft 的说明,请参阅 why can't we connect to loopback address from non loopback addresses anymore?。

【讨论】:

当我将多个客户端同时连接到 Java 服务器时,套接字写入错误

】当我将多个客户端同时连接到Java服务器时,套接字写入错误【英文标题】:Socketwriteerrorwheniconnectmultipleclienttojavaserversimultaneously【发布时间】:2012-09-1107:00:39【问题描述】:我正在创建一个桌面应用程序,其中多个客户端必须... 查看详情

将 DMS 连接到 S3

】将DMS连接到S3【英文标题】:ConnectingDMStoS3【发布时间】:2018-05-1815:22:33【问题描述】:我们正在尝试使用S3源设置DMS,但是我们无法将复制实例连接到源S3端点。当我们在源端点上运行连接测试时,我们收到的错误是:ErrorDetai... 查看详情

无法将客户端连接到 AWS 上的远程套接字

】无法将客户端连接到AWS上的远程套接字【英文标题】:ImpossibletoconnectaclienttoaremotesocketonAWS【发布时间】:2018-11-1609:34:27【问题描述】:我遇到了一个新开发者使用socket.io的问题我有一个在AWSEC2实例上运行的socket.io服务器。它... 查看详情

SOCKS和socket有啥关系?

...【发布时间】:2015-10-1106:35:04【问题描述】:SOCKS(安全套接字)是一种代理协议。套接字是通信的端点。它们有什么关系?谢谢!【问题讨论】:【参考方案1】:要连接到SOCKS服务器,您需要一个套接字。而不是将本地套接字... 查看详情

如何将绑定连接到(Winform)ComboBox 控件以从绑定源获取/设置控件中的选择?

】如何将绑定连接到(Winform)ComboBox控件以从绑定源获取/设置控件中的选择?【英文标题】:HowdoIconnectabindingtoa(Winform)ComboBoxcontroltoget/settheselectioninthecontrolfromthebindingsource?【发布时间】:2021-09-2006:13:34【问题描述】:我已经深... 查看详情

如何将tcp连接重新连接到同一端口?(代码片段)

...侦听该端口时成功。在足够多的尝试次数上,用于连接的套接字可以绑定到连接到的同一端口,由于前面提到的同时连接,该端口成功。你现在神奇地有一个客户端连接到自己另一答案TCP连接由此元组(localaddress,localport#,foreignaddr... 查看详情

端点、套接字、接受器之间的区别

】端点、套接字、接受器之间的区别【英文标题】:Differencebetweenendpoint,socket,acceptor【发布时间】:2017-11-2315:05:48【问题描述】:我正在尝试理解使用套接字进行网络编程的概念。据我了解,电话交谈是平行的,端点是电话号码... 查看详情

是否是侦听服务结构远程端点的单个线程

...在网络上打开端口然后等待客户端连接到该端口的服务器套接字,那么是。但如果你的意思是最终处理请求的线程,那么将会有几个。事实上,你甚至可以控制这部分-FabricTransportServiceRemotingListener接受带有名为MaxConcurrentCalls的 查看详情

客户端可以同时有两个连接到同一个套接字侦听器吗?

】客户端可以同时有两个连接到同一个套接字侦听器吗?【英文标题】:Canaclienthavetwoconnectionsatthesametimetothesamesocketlistener?【发布时间】:2016-11-2414:31:54【问题描述】:我们有一个正在监听端口17700的服务器和一个想要同步其数... 查看详情

如何将intellij想法连接到胶水端点?

】如何将intellij想法连接到胶水端点?【英文标题】:Howconnectintellijideatoglueendpoint?【发布时间】:2020-03-0117:21:57【问题描述】:我已经创建了胶水开发者端点,但不知道如何将intellijideazeppelinnotebook附加到它?以下是开发端点的... 查看详情

将套接字连接到设备上的本地地址

】将套接字连接到设备上的本地地址【英文标题】:Connectsockettolocaladdressondevice【发布时间】:2013-02-1418:09:48【问题描述】:我现在在这个问题上闲逛了一段时间。我通过接收端的套接字将数据从设备发送到设备我必须将此数据... 查看详情

SQL 将许多 tsv 文件连接到数据库中的单个表中,同时跟踪文件源 (MonetDBLite)

】SQL将许多tsv文件连接到数据库中的单个表中,同时跟踪文件源(MonetDBLite)【英文标题】:SQLconcatenatemanytsvfilesintosingletableinadatabase,whilekeepingtrackoffilesource(MonetDBLite)【发布时间】:2017-05-1515:05:22【问题描述】:我正在使用MonetDBLiteR... 查看详情

环回 API 连接到 MongoDB Atlas

】环回API连接到MongoDBAtlas【英文标题】:LoopbackAPIConnectiontoMongoDBAtlas【发布时间】:2019-10-2712:02:12【问题描述】:我使用Loopback创建了一个API,并让它在LocalHost上的MongoDB上运行良好。我现在正在尝试将其切换为使用MongoDBAtlas(在... 查看详情

Java - 异步套接字通道无法连接到远程异步服务器套接字通道

】Java-异步套接字通道无法连接到远程异步服务器套接字通道【英文标题】:Java-asyncsocketchannelcannotconnecttoremoteasyncserversocketchannel【发布时间】:2020-07-3011:09:15【问题描述】:我创建并调试了一个使用AsynchronousSocketChannel和Asynchrono... 查看详情

环回中的 WinSock UDP 套接字创建顺序。

】环回中的WinSockUDP套接字创建顺序。【英文标题】:WinSockUDPsocketcreationorderinloopback.【发布时间】:2013-01-1615:52:48【问题描述】:我有一个用于专用LAN的网络应用程序。我正在使用环回进行测试。当我在LAN上测试时,套接字创建... 查看详情

邮件发送失败。无法连接到远程服务器。套接字操作

】邮件发送失败。无法连接到远程服务器。套接字操作【英文标题】:FailureSendingMail.Unabletoconnecttoremoteserver.Asocketoperation【发布时间】:2015-06-0902:11:50【问题描述】:所以我试图通过VB.net代码发送电子邮件,但我不断收到此错误... 查看详情

android系统如何管理连接到有界远程服务的客户端列表

】android系统如何管理连接到有界远程服务的客户端列表【英文标题】:Howandroidsystemmanageslistofconnectedclientstoaboundedremoteservice【发布时间】:2014-08-0816:01:44【问题描述】:我正在做一个项目,对安卓手机上的系统进行实时分析。我... 查看详情

在将套接字与端点绑定之前如何找到可用端口?

】在将套接字与端点绑定之前如何找到可用端口?【英文标题】:howdoifindanavailableportbeforebindthesocketwiththeendpoint?【发布时间】:2012-04-1107:32:46【问题描述】:我正在开发一个使用3个端口的服务器-客户端应用程序[TCPSOCKET.Net4.0]..... 查看详情