我的场景是:
有两种软件在两台不同的机器上运行,一台作为服务器,一台作为客户端。它们都使用相同的端口在 UDP 级别上相互通信。(由于客户端硬件,无法在 TCP 级别设置通信(内存有限))。这种情况现在已经有 15 年的时间了。
现在我想为这个客户端制作一个模拟器,这样我就不必使用客户端了(因为每次我需要调试和排除故障时都需要重新配置它)。而且它与我所在的位置不同。
我所做的是在虚拟网卡(使用 de devcon 实用程序创建)上制作了一个简单的客户端应用程序,其中包含侦听器端口和发送器端口(与服务器相同)
现在,当我运行客户端时,我得到一个 SocketException:“每个套接字地址(协议/网络地址/端口)通常只允许使用一次”(这是我启动客户端时发生的第一件事)
这发生在我创建侦听器的行:UdpClient listener = new UdpClient(listenPort);
在 osi 模型中,首先是网络层(IP 地址),然后是端口号(带有 TCP/UDP 层)。
7 Application Process Application
6 Presentation
5 Session
4 Transport Host to host TCP, UDP Packets
3 Network Internet IP, ICMP Frames
2 Data Link Network Access ARP Bits
1 Physical
客户端没有在与服务器相同的网卡上监听(但它们都在同一台计算机上运行)。
我不明白的是为什么这个消息?可能是不可能创建虚拟网卡并在同一台计算机上使用相同的端口?(因为我想在同一台计算机上运行客户端和服务器)
[编辑]
我只是想知道这可能是不可能的,因为它为所有网卡使用一个端口列表,因此它已经被使用了。然后我的问题是:“如何制作第二个要监听的端口列表(因为它是同一台计算机中的不同网卡?”
几乎和VirtualBox 或VirtualPC 做一个新的虚拟网卡一样。创建它们时,可以在同一个端口上侦听(尽管它是虚拟机),但仍然是相同的硬件。那么问题来了,他们是怎么做到的?
[/编辑]