[ https://issues.apache.org/jira/browse/DIRMINA-1172?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17717045#comment-17717045 ]
Alexander B commented on DIRMINA-1172: -------------------------------------- Hi, I can add some more information: I did several scenarios, some work, some not: Lets say we have 3 machines: A and B are senders and C is the receiver, where an app incl. Mina is running: Scenario 1: Machine A is sending to Machine C via Port 9800. Machine B is sending to Machine C via Port 9801. This works fine. Scenario 2: Machine A is sending to Machine C via Port 9800 in a first cmd. Machine A is sending to Machine C via Port 9801 in a second cmd (independently from the first one). This works fine. Scenario 3: Machine A is sending to Machine C via Port 9800 and 9801 separately in one cmd (or to be more specific in one external application) This scenario runs into the effect of having just one session object and every message is going throw. I have added this external application as a minimum udpTest. For scenario 1 you can run this tester from Machine A: "java UDPTest hostnameOfMachineC 9800" and from Machine B: "java UDPTest hostnameOfMachineC 9801". For scenario 2 you can run this tester from Machine A "java UDPTest hostnameOfMachineC 9800" and in a second cmd "java UDPTest hostnameOfMachineC 9801". For scenario 3 you can run this tester from Machine A "java UDPTest hostnameOfMachineC 9800 9081". So here it is one application sending to two ports Maybe it has something to do with the same "socket"-object, which is sending or the same "remoteport", which is used from this socketobject? [^UDPTest4.java] > Multiple DatagramAcceptors and the creation of a session object > --------------------------------------------------------------- > > Key: DIRMINA-1172 > URL: https://issues.apache.org/jira/browse/DIRMINA-1172 > Project: MINA > Issue Type: Bug > Components: Core > Affects Versions: 2.1.5 > Reporter: Alexander B > Priority: Major > Attachments: UDPTest4.java > > > Hello, > I am using two independently created NioDatagramAcceptors, which are created > by the following code : > {code:java} > AbstractIoService inputSource = new NioDatagramAcceptor(); > ((NioDatagramAcceptor) inputSource).getSessionConfig().setReuseAddress(true); > DefaultIoFilterChainBuilder filterChainBuilderUDP = > ((NioDatagramAcceptor)inputSource).getFilterChain(); > filterChainBuilderUDP.addLast("logger", new LoggingFilter()); > ((NioDatagramAcceptor) > inputSource).getSessionConfig().setIdleTime(IdleStatus.READER_IDLE, > getIdleTimeout()); > ((NioDatagramAcceptor) inputSource).setHandler(this); > try { > ((NioDatagramAcceptor)inputSource).bind(new InetSocketAddress(port)); > } catch (IOException e) { > log.error("Failed to connect {}", e); > } > {code} > One Acceptor is listening on port 9800, the other one on 9801. If I now send > UDP packages (from a external application) to both ports (independently). It > seems, that both UDP port are "connected" to the same session. > Information: The external app is sending: > Message "TEST_1 <timestamp>" just to port 9800 > Message "TEST_2 <timestamp>" just to port 9801 > The overwritten method messageReceived will give the following output: > {code:java} > public void messageReceived(IoSession session, Object message) throws > Exception { > String msgStr = message.toString(); > log.info("SessionId:" + session.getId() + " " + msgStr); > } > {code} > 2023-04-19_11:47:35.035 [NioDatagramAcceptor-2] INFO - SessionId:1 TEST_1 > 1681904855701 > 2023-04-19_11:47:35.035 [NioDatagramAcceptor-3] INFO - SessionId:1 TEST_2 > 1681904855701 > So, both messages (for port 9800 and port 9801) are received by SessionId1. > If I do exactly the same with `NioSocketConnector`, I can see two different > sessions, such that both messages are handled independently: > 2023-04-19_11:44:35.725 [NioProcessor-11] INFO - SessionId:1 TEST_1 > 1681904875701 > 2023-04-19_11:44:37.754 [NioProcessor-15] INFO - SessionId:2 TEST_2 > 1681904875701 > Is there anything I did not mention in the context of UDP/DatagramAcceptor? > Or is there any setting, such that DatagramAcceptors can create/handle their > own session objects? -- This message was sent by Atlassian Jira (v8.20.10#820010) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@mina.apache.org For additional commands, e-mail: dev-h...@mina.apache.org