Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: wtyczka ktransfer- pytania
Konnekt | Forum > Developerzy > Tworzenie wtyczek
KoSiarzPL
CODE

else if(port == 1) {
if(GETINT(Cfg::behindNAT)) {
 if(!GETINT(Cfg::portForwarding)) {
  KTMessage("Żadna ze stron nie ma możliwości połączenia!",true,1);
  return;
 }
}


Dlaczego uznaje sie, ze jesli port jest rowny 1 to oznacza ze uzytkownik docelowy jest za natem. Dodatkowe pytanie to kiedy ta wartosc jest rowna jeden i przez kogo jest ustawaiana (zapewne jadro ale dlaczego ono tak ustawia). Dla przypomnienia autorom zmienna port jest inicjowana tak:
int port = GETCNTI(cntid,CNT_PORT);

Aha jeszcze jedno, ustawiony port to port dla konnekta czy wtyczki

To tyle na razie. Prace nad ta wtyczka ida powoli bo musze przejrzec caly kod linijka w linijke i nauczyc sie przy okazji dzialania konnekta wink.gif

Dokumentacja do gruntownej przebudowy (bede to powtarzal kiedy tylko sie da wink.gif )
hao
GaduGadu podaje dla użytkownika za natem port równy 1... Podobnie chyba 2, albo -1 gdy user nie ma nas na swojej liście kontaktów... nie pamiętam dokładnie... Powinno być opisane w libgadu w opisie protokołu...

Wartość CNT_PORT ustawiana jest przez gg.dll gdy dostanie stosowną informację od serwera GG.

QUOTE
Aha jeszcze jedno, ustawiony port to port dla konnekta czy wtyczki


Nie rozumiem? Sprecyzuj wink.gif

Btw. Jeżeli nie dostajesz odpowiedzi w miarę szybko pisz na maila lub GG... Nie zawsze mi się te posty odnajdują w ostatnio napisanych...
A zależy nam żeby ci się pisało komfortowo wink.gif
diss
Czy jak mam zmienne ip to jest jakiś sposób żeby używać tej wtyczki w trybie aktywnym? Tzn sposób wiem, że jest - wystarczy wpisać IP i (w moim przypadku) przekierowany port. Tylko jak zrobić, żeby po każdej zmianie IP, nie trzeba było ręcznie uaktualniać odpowiedniego pola?
@ndy
@diss ustaw na autodetekcje:
user posted image
Olórin
To zadziała jedynie kiedy mamy łącze o dynip na własnym komputerze, nie po LANie
diss
Dokładnie, a ja mam serwer na dedykowanym komputerku.

Mam za to uaktualniane na bieżąco konto na dyndns.org. Może dało by się tak usprawnić wtyczkę, żeby resolvovał wpisany adres?
diss
Nikt nie znajdzie czasu żeby dorobić tą małą, przydatną funkcję? smile.gif

Prawdopodobnie należało by dokonać edycji w pliku
kTransfer.cpp w linii 469, gdzie jest taki kod:
CODE
  if(GETINT(Cfg::portForwarding))
  {
   GETSTR(Cfg::remoteIP,buffer,256);

   lp->external_addr = (UINT)inet_addr(buffer);
   lp->external_port = (UINT)GETINT(Cfg::remotePort);
  }


Nie wymagało by to żadnych zmian w plikach z zasobami. Można ewentualnie dodać sprawdzanie jakimś regexpem czy adres jest w postaci [0-9]+\.[0-9]+\.[0-9]+\.[0-9]+ . Jak nie to spróbować resolve. Chociaż nie wiem czy przypadkiem użycie regexpa nie wymagało by includowania czegoś dodatkowo, dlatego może to być problem.
diss
Czy takie coś miało by szansę działać? Nie mam jak skompilować bo bym sobie sam sprawdził.

QUOTE
   if(GETINT(Cfg::portForwarding))
  {
   GETSTR(Cfg::remoteIP,buffer,256);

hostent* remoteHost;

// If the user input is an alpha name for the host, use gethostbyname()
if (isalpha(buffer[0])) /* buffer is a name */
{
 remoteHost = gethostbyname(buffer);

  if (WSAGetLastError() != 0) /* completed successfully */
  {
   if (WSAGetLastError() != 11001)  /* host not found */
     buffer = remoteHost.h_addr_list[0];  /* nie znam się, nie wiem czy tak się dobiera do pola struktury */
  }
}


   lp->external_addr = (UINT)inet_addr(buffer);
   lp->external_port = (UINT)GETINT(Cfg::remotePort);
   }
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2012 Invision Power Services, Inc.