C# sockety w azure

0

Zrobiłem aplikacje obsługującą sockety w c# i na localhoscie działa bez problemu. Problem pojawił się, gdy postawiłem aplikację na VM w azure. Przy starcie socketów wyrzuca błąd
Cannot assign requested address
W ustawieniach sieci VM ustawiłem port 51207 (port działania socketów) jako dozwolony, ale nadal nie działa
screenshot-20201109121501.png
Wie ktoś co na to poradzić?

Edit: VM stoi na ubuntu 18.04

0

Cannot assign requested address

A na jaki adres:port próbujesz bindować aplikację?

0

Port podany wyżej, a IP publiczne - te samo co do ssh, www etc

1
KimPix napisał(a):

a IP publiczne - te samo co do ssh, www etc

No właśnie, z wewnątrz maszyny nie możesz bindować na publiczne IP, bo ona nawet nie jest świadoma jego istnienia.

Zbinduj się na prywatny adres IP i z regułami jakie masz teraz ustawione powinno działać.

0

Teraz działa, ale client nie może się z nim połączyć nieznany host

1

Klient musi się łączyć po publicznym adresie IP maszyny.

0

No ale właśnie pokazuje powyższy błąd przy tym

0

Ale łączysz się po IP i dostajesz nieznany host?
Zawsze myślałem, że nieznany host bardziej dotyczy serwerów DNS, czyli jak podasz jakąś nieistniającą nazwę domenową.

0

Tak, podaje w kliencie publiczny adres IP i port i wyrzuca powyższy błąd
Serwer nasłuchuje na prywatnym adresie IP

edit:
w taki sposób się łącze

IPHostEntry host = Dns.GetHostEntry(Config.serverIPAdress);
IPAddress ipAddress = host.AddressList[0];
IPEndPoint remoteEP = new IPEndPoint(ipAddress, Config.serverPort);

sender = new Socket(ipAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp);```
0

Tam nie trzeba gdzieś w konfiguracji dopuścić ruchu z twojego IP? Możesz też zobaczyć czy telnet ci się łączy. Może port jest zablokowany na fajnymwałolu.

1

@KimPix: Ja bym to wywalił IPHostEntry host = Dns.GetHostEntry(Config.serverIPAdress);

Na 99% tu jest błąd, bo wywołujesz Dns.GetHostEntry podając adres IP.

1

Dzięki za pomoc, naprawiłem.

Linijke IPHostEntry host = Dns.GetHostEntry(Config.serverIPAdress); usunąłem i zmieniłem

IPAddress ipAddress = IPAddress.Parse(Config.serverIPAdress);
IPEndPoint remoteEP = new IPEndPoint(ipAddress, Config.serverPort);

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