Я тестировал поддержку SCTP на Java + lksctp.
Я написал простой клиент, чтобы увидеть только начальную настройку ассоциации SCTP, которая в основном представляет собой INIT и INIT ACK.
Я проверил 2 способа для Клиента отправить «INIT» на СЕРВЕР, который в основном:
создать объект SctpChannel с помощью "open (SocketAddress)"
try {
InetSocketAddress socketAddress = new InetSocketAddress("192.168.52.197", 2905);
SctpChannel sctpChannel = SctpChannel.open(socketAddress,1,1);
sctpChannel.bind(new InetSocketAddress("192.168.1.251",2906));
sctpChannel.connect(socketAddress, 1 ,1);
таким образом, я вижу в Wireshark, что у меня есть «Параметр IPv4-адреса» для всех моих сетевых интерфейсов (3, как вы можете видеть ниже), но Исходный порт получает номер дополнительного порта вместо 2906 как Я хотел бы иметь, и это в безвыходном положении.
Итак ... после привязки локального IP / порта после «открытия» ... поэтому я изменил код на:
создать объект SctpChannel, который просто "open ()"
привязка локального IP-адреса клиента и порта
«подключиться» к удаленному серверу IP и порт
try {
InetSocketAddress socketAddress = new InetSocketAddress("192.168.52.197", 2905);
SctpChannel sctpChannel = SctpChannel.open();
sctpChannel.bind(new InetSocketAddress("192.168.1.251",2906));
sctpChannel.connect(socketAddress, 1 ,1);
Таким образом, я вижу в wireshark, что ожидаются порты источника / назначения (2906/2905), но у INIT нет «параметра адреса IPv4».
Так кто-нибудь знает, почему во втором коде мне не хватает "параметра адреса IPv4" в INIT? Я что-то пропустил?
Любая помощь будет очень кстати.
Спасибо.