Netty - błąd SCTP

0

Witam. Przy próbie odpalenia prostego serwera w Netty mam taki oto błąd:

Your platform does not provide complete low-level API for accessing direct buffers reliably. Unless explicitly requested, heap buffer will always be preferred to avoid potential system unstability.

Na windowsie 10 miałem błąd o nieobsługiwanie SCTP, na maku tak samo po mimo zainstalowanej libusrsctp która niby miała pomóc. Ten błąd pojawia się na windowsie, a na maku jest dodatkowo powyższa informacja:

Exception in thread "main" io.netty.channel.ChannelException: Unable to create Channel from class class io.netty.channel.sctp.nio.NioSctpServerChannel
	at io.netty.bootstrap.AbstractBootstrap$BootstrapChannelFactory.newChannel(AbstractBootstrap.java:439)
	at io.netty.bootstrap.AbstractBootstrap.initAndRegister(AbstractBootstrap.java:292)
	at io.netty.bootstrap.AbstractBootstrap.doBind(AbstractBootstrap.java:274)
	at io.netty.bootstrap.AbstractBootstrap.bind(AbstractBootstrap.java:270)
	at io.netty.bootstrap.ServerBootstrap.bind(ServerBootstrap.java:45)
	at io.netty.bootstrap.AbstractBootstrap.bind(AbstractBootstrap.java:245)
	at io.netty.bootstrap.ServerBootstrap.bind(ServerBootstrap.java:45)
	at org.example.netty.chat.ChatServer.run(ChatServer.java:33)
	at org.example.netty.chat.ChatServer.main(ChatServer.java:14)
Caused by: java.lang.UnsupportedOperationException: SCTP not supported on this platform
	at sun.nio.ch.sctp.SctpServerChannelImpl.<init>(SctpServerChannelImpl.java:45)
	at com.sun.nio.sctp.SctpServerChannel.open(SctpServerChannel.java:102)
	at io.netty.channel.sctp.nio.NioSctpServerChannel.newSocket(NioSctpServerChannel.java:53)
	at io.netty.channel.sctp.nio.NioSctpServerChannel.<init>(NioSctpServerChannel.java:66)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at java.lang.Class.newInstance(Class.java:442)
	at io.netty.bootstrap.AbstractBootstrap$BootstrapChannelFactory.newChannel(AbstractBootstrap.java:437)
	... 8 more

Co mogę z tym zrobić. Próbowałem wszystkiego co mi przyszło na myśl. Z góry dzięki.

1

Przesiądź się na Linuksa ;-) Tam masz wsparcie dla SCTP i nie trzeba kombinować z jakimiś driverami i bibliotekami.

edited:
Żeby nie było, że głupia rada, to jak spojrzysz sobie na model OSI, to SCTP masz obok UDP i TCP na warstwie transportowej. Teraz proste pytanie, czy jak na danej platformie nie byłoby stosu TCP, to dziwiłbyś się, że biblioteki, które operują na wyższych warstwach nie chcą działać?

0

We wstawionym stack trejsie masz:

    at io.netty.channel.sctp.nio.NioSctpServerChannel.<init>(NioSctpServerChannel.java:66)

czyli w Bootstrapie netty używany jest NioSctpServerChannel. Wskaż inny kanał. Dla serwera może to być: NioServerSocketChannel.

Przykłady inicjalizacji netty masz np. tu

1 użytkowników online, w tym zalogowanych: 0, gości: 1