第 9.3.1 章中的优先级部分告诉我应该先应用特殊情况,然后再应用一般情况。
[General]
*.host[0].waitTime = 5ms # specifics come first
*.host[3].waitTime = 6ms
*.host[*].waitTime = 10ms # catch-all comes last
我在 omnetpp.ini 文件中有以下几行:
**.server[*].tcpApp[0].port = 1000
**.pods[0..1].**.server[*].tcpApp[0].port = 80
**.pods[2..3].**.server[*].tcpApp[0].port = 21
此代码有效,但在检查参数时每个服务器都有 1000,而不是特殊情况 80 和 21。所以我希望它看起来像这样:
**.pods[0..1].**.server[*].tcpApp[0].port = 80
**.pods[2..3].**.server[*].tcpApp[0].port = 21
**.server[*].tcpApp[0].port = 1000
然而,这会产生一个错误,其中包括我的服务器所基于的 StandardHost 模块的 TCP 模块中的空指针异常。
在 ned 文件中,参数声明如下:
int port = default(1000); // port number to listen on
留下这个包罗万象的线路也会导致错误。只有在其他两行之上的最后一行才能让模拟运行。
可以在 INET 的 TCPServerHostApp.ned 中找到端口参数的示例。我想为应该在服务器上运行的不同服务分配不同的端口。
你对我有什么建议,正确应用这些参数?我设置参数的方式是否有错误,或者我是否需要在初始化过程中自己设置端口(这对我来说没有意义)?
编辑:业力系统还不允许我回答这个问题,所以这是我的问题的原因:
嗯,问题出在另一个地方。使用 connect(ipaddr, port) 连接新套接字时,我从作业请求消息中得到了错误的端口。
在流量生成模块中,我读取了错误的连接服务器的端口,这导致了错误,因为所使用的端口始终是默认值 = 1000 而不是 80 或 21。
服务器期望 80 或 21,当套接字尝试连接端口 1000 时导致崩溃。