我正在使用基于 ZeroMq 和 NetMQ 的通信(两个项目中的问题相同)
我有应用程序在防火墙后面运行,
在服务器端,它很容易定义为入站流量打开哪些端口,
但是在客户端,我似乎只能指定目标(又名服务器)地址和端口。
是否可以定义哪个端口将用于客户端应用程序上的出站流量。
例如(在 NetMQ 中)
using (NetMQContext ctx = NetMQContext.Create())
{
using (NetMQSocket snapshot = ctx.CreateSocket(ZmqSocketType.Dealer))
{
// connect to remote address, no place to specify outbound port
snapshot.Connect("192.168.1.10:5555");
}
}
在一个简单的通信场景中,我们有一个服务器和一个客户端
服务器正在机器 A (192.168.1.10) 上运行 - 并监听端口 5555
客户端在机器 B (192.168.1.9) 上运行 - 并且正在启动与服务器 (A) 的通信
如果我们查看客户端上的通信信息,我们会看到系统分配了端口 XXXXX(例如 51234)及其出站到 192.168.1.10:5555
大多数情况下 XXXXX 端口是系统分配的(空闲端口),但在某些极端情况下,XXXXX 端口需要是特定端口(由于极端的安全环境)