Nowe posty

Autor Wątek: Problem z udostepnianiem internetu na sieci  (Przeczytany 3277 razy)

  • Gość
Problem z udostepnianiem internetu na sieci
« dnia: 2005-12-19, 03:35:44 »
Witam

Mam taki dosyć poważny problemik, dlatego proszę tutaj chociażby o nakierowanie :-)

Potrzebuję zrobić własne sloty, niezależne od bibliotek systemowych. Nie mogę do tego używać template\\'ów.

Przydałaby się do tego pomocnicza tablica wskaźników do funkcji i metod. Problem w tym, że wskaźniki do metod wskazują na klasę+metodę, więc nie są zbytnio kompatybilne ze wskaźnikami funkcji. Dodatkowo, wskaźnik na TButton::Method() nie pasuje do TListBox::Method(), więc z tablicy nici :|

Tablica służyć ma zbieraniu wskaźników, do konkretnego zdarzenia, po któ¶ego wywołaniu będą po kolei wywoływane funkcje i metody...

Ale jak to połączyć ze sobą  O.o7

darkgod

  • Gość
Problem z udostepnianiem internetu na sieci
« Odpowiedź #1 dnia: 2005-12-19, 08:52:56 »
2005-12-19 03:35:44 yonami napisał:

> Witam
 >
 > Mam taki dosyć poważny problemik, dlatego proszę tutaj chociażby o nakierowanie :-)
 >
 > Potrzebuję zrobić własne sloty, niezależne od bibliotek systemowych. Nie mogę do tego używać
 > template\\'ów.
 >
 > Przydałaby się do tego pomocnicza tablica wskaźników do funkcji i metod. Problem w tym, że
 > wskaźniki do metod wskazują na klasę+metodę, więc nie są zbytnio kompatybilne ze wskaźnikami
 > funkcji. Dodatkowo, wskaźnik na TButton::Method() nie pasuje do TListBox::Method(), więc z
 > tablicy nici :|
 >
 > Tablica służyć ma zbieraniu wskaźników, do konkretnego zdarzenia, po któ¶ego wywołaniu
 > będą po kolei wywoływane funkcje i metody...
 >
 > Ale jak to połączyć ze sobą  O.o7

Też kiedyś o tym myślałem, ale nie znalazłem rozwiazania bez użycia szablonów.
A co Ci nie odpowiada w używaniu template\\'ów?
Przyjrzyj się bibliotece libsigc++ (http://libsigc.sourceforge.net/).
Myślę że wybrali template\\'y nie bez powodu.

Pozdrawiam

spideros1

  • Gość
Problem z udostepnianiem internetu na sieci
« Odpowiedź #2 dnia: 2005-12-19, 09:34:54 »
Pewnie kolejny kretynski program na zaliczenie.
Jak nie mozesz uzyc template, to rob na #define :)
Jesli funkcje nie maja miec parametrow to mozna zrobic cos takiego:

class slot_base {
public:
virtual void invoke()=0;
};

std::list sloty;

#define DEKL_TYP(Typ)
class slot_dla_##Typ : public slot_base {
public:
 typedef void (Typ::*fn)();
 fn _func;
 Typ * _obiekt;
 
virtual void invoke()
{
 _obiekt->_func();
}
};

DEKL_TYP(TMessageBox)

#define DODAJ(Lista,Typ,Funkcja)
 (Lista).push_back(new slot_dla_##Typ(Funkcja))

DODAJ(sloty, TMessageBox, Clicked())

#define URUCHOM(Lista)
do{
std::list::iterator i;
for(i=(Lista).begin();i!=(Lista).end();i++)
 (*i).invoke();
} while(0)

URUCHOM(sloty);

Moga byc jakies bledy, bo nie mam kompilatora pod reka, ale generalnie chodzi mi o zasade dzialania.


spideros1

  • Gość
Problem z udostepnianiem internetu na sieci
« Odpowiedź #3 dnia: 2005-12-19, 09:37:18 »
2005-12-19 09:34:54 spideros1 napisał:

> Pewnie kolejny kretynski program na zaliczenie.
 > Jak nie mozesz uzyc template, to rob na #define :)
 > Jesli funkcje nie maja miec parametrow to mozna zrobic cos takiego:
 >
 > class slot_base {
 > public:
 > virtual void invoke()=0;
 > };
 >
 > std::list sloty;
 >
 > #define DEKL_TYP(Typ)
 > class slot_dla_##Typ : public slot_base {
 > public:
 >  typedef void (Typ::*fn)();
 >  fn _func;
 >  Typ * _obiekt;
 >  

slot_dla_##Typ (fn a, Typ * _b)
{ _func=a; _obiekt=b; }

 > virtual void invoke()
 > {
 >  _obiekt->_func();
 > }
 > };
 >
 > DEKL_TYP(TMessageBox)
 >
 #define DODAJ(Lista,Typ,Obiekt,Funkcja)
  (Lista).push_back(new slot_dla_##Typ(Funkcja,Obiekt))
 
 DODAJ(sloty, TMessageBox, jakis_wskaznik_na_obiekt, Clicked())
 >
 > #define URUCHOM(Lista)
 > do{
 > std::list::iterator i;
 > for(i=(Lista).begin();i!=(Lista).end();i++)
  (*i)->invoke();
 > } while(0)
 >
 > URUCHOM(sloty);
 >
 > Moga byc jakies bledy, bo nie mam kompilatora pod reka, ale generalnie chodzi mi o zasade
 > dzialania.
 >
 >

  • Gość
Problem z udostepnianiem internetu na sieci
« Odpowiedź #4 dnia: 2005-12-19, 11:03:10 »
No właśnie nie o to chodzi

To działa tak template. Dla określonych typów.
W przypadku template - dla typów określonych jako używane.

A potrzebuje dla totalnie dowolnego typu, nawet dla takiego, którego nie ma programie, a znajdzie sie w pluginie.

Dzisiaj przejrze boost::function
Jak czytałem to właśnie takie coś potrzebuje. Nie ważne czy to metoda czy funkcja i tak otrzymuje wskaźnik do funkcji, a ona i tak wie, gdzie sie znajduje :]

Musze tylko implementacje tego obejrzeć i zastosować u siebie bez dopinania boosta.

:|

Skankiyam

  • Gość
Problem z udostepnianiem internetu na sieci
« Odpowiedź #5 dnia: 2005-12-19, 00:31:33 »
Witam

Problem polega na tym że nie moge udostepnic internetu na sieci nie mozna nazwac tego siecia.Sa to dwa kompy Linux RED HAT 9 i WinXp.Podam swoja konfiguracje w ktorej jest gdzies blad.

Pliki w /etc/sysconfig/network
ifcfg-eth0

USERCTL=no
PEERDNS=yes
GATEWAY=moj brama od internetu
TYPE=Ethernet
DEVICE=eth0
HWADDR=00:40:05:01:11:cc
BOOTPROTO=none
NETMASK=255.255.255.0
ONBOOT=yes
IPADDR=moj IP zewnetrzny
NETWORK=numer o jeden mniej od bramy
BROADCAST=81.168.211.255

ifcfg-eth1

IPADDR=192.168.0.1
NETMASK=255.255.255.0
TYPE=Ethernet
DEVICE=eth1
BOOTPROTO=none
ONBOOT=yes
NETWORK=192.168.0.0
BROADCAST=192.168.0.255
GATEWAY=tu wpisalem brame swoja do internetu
USERCTL=no
PEERDNS=yes

karta eth0 jest zewnetrzna a eth1 wewnetrzna od sieci lokalnej

W pliku /etc/resolv.conf mam wpisane adresy servera DNS  
do internetu ktore dostałem od uslugodawcy

Firewalla mam zroboinego taką prowizorke  dopiero sie ucze  
w /etc/rc.d/rc.firewall.start  a w /etc/rc.d/rc.local jest sciezka wpisana do firewalla

Firewall

#!/bin/sh
iptables -t filter -X
iptables -t filter -F
iptables -t nat -X
iptables -t nat -F

echo '1' >> /proc/sys/net/ipv4/ip_forward
#odblokowanie loopback

iptables -A INPUT -i lo -j  ACCEPT

#FORWARD
iptables -A FORWARD -m tcp -p tcp -s 0/0 --sport 80 -d 192.168.0.1/24 --syn -j D
ROP
iptables -A FORWARD -m tcp -p tcp -s 192.168.0.1/24 --sport  80 -d 0/0 -j ACCEPT
iptables -A FORWARD -m tcp -p tcp -d 192.168.0.1/24 --dport 80 -s 0/0 -j ACCEPT
iptables -A FORWARD -i eth1 -j ACCEPT
iptables -A FORWARD -i eth0 -m state --state  ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -P POSTROUTING  DROP
iptables -t nat -A POSTROUTING   -o eth0  -j MASQUERADE

A na configu IP w WinXp  mam wpisane:
IP 192.168.0.2
Maska 255.255.255.0
Brama nie wiem dokladnie co wpisac ktory numer ja wpisuje brame ktora mam wpisana w eth0 i eth1 od internetu zewnetrznego

Na Linuxie mam internet.Z XP moge sie polaczyc z linuxem.
Na Xp nie moge odbierac Internetu.
Pytania mam takie.
Czy cos jest zle z tym configiem?
Jak maskowac IP wewnetrzne?
Czy moje wpisy o maskaowaniu sa dobre?
Jak pisze o otwarciu portu 80 na numery sieci lokalnej czy podaje dobre IP?Jest to w Firewallu
Mam na Xp Firewalla.Moze to prowadzic do konfliktu pobierania Internetu z innej maszyny.Nie moge pingowac jak jest wlaczony ale jak wylanczam to juz moge
Prosze o Pomoc.
Pozdrawiam

Skankiyam

  • Gość
Problem z udostepnianiem internetu na sieci
« Odpowiedź #6 dnia: 2005-12-19, 00:40:31 »
2005-12-19 00:31:33 Skankiyam napisał:

> Witam
 >
 > Problem polega na tym że nie moge udostepnic internetu na sieci nie mozna nazwac tego siecia.Sa
 > to dwa kompy Linux RED HAT 9 i WinXp.Podam swoja konfiguracje w ktorej jest gdzies blad.
 >
 > Pliki w /etc/sysconfig/network-scripts
 > ifcfg-eth0
 >
 > USERCTL=no
 > PEERDNS=yes
 > GATEWAY=moj brama od internetu
 > TYPE=Ethernet
 > DEVICE=eth0
 > HWADDR=00:40:05:01:11:cc
 > BOOTPROTO=none
 > NETMASK=255.255.255.0
 > ONBOOT=yes
 > IPADDR=moj IP zewnetrzny
 > NETWORK=numer o jeden mniej od bramy
 > BROADCAST=81.168.211.255
 >
 > ifcfg-eth1
 >
 > IPADDR=192.168.0.1
 > NETMASK=255.255.255.0
 > TYPE=Ethernet
 > DEVICE=eth1
 > BOOTPROTO=none
 > ONBOOT=yes
 > NETWORK=192.168.0.0
 > BROADCAST=192.168.0.255
 > GATEWAY=tu wpisalem brame swoja do internetu
 > USERCTL=no
 > PEERDNS=yes
 >
 > karta eth0 jest zewnetrzna a eth1 wewnetrzna od sieci lokalnej
 >
 > W pliku /etc/resolv.conf mam wpisane adresy servera DNS  
 > do internetu ktore dostałem od uslugodawcy
 >
 > Firewalla mam zroboinego taką prowizorke  dopiero sie ucze  
 > w /etc/rc.d/rc.firewall.start  a w /etc/rc.d/rc.local jest sciezka wpisana do firewalla
 >
 > Firewall
 >
 > #!/bin/sh
 > iptables -t filter -X
 > iptables -t filter -F
 > iptables -t nat -X
 > iptables -t nat -F
 >
 > echo '1' >> /proc/sys/net/ipv4/ip_forward
 > #odblokowanie loopback
 >
 > iptables -A INPUT -i lo -j  ACCEPT
 >
 > #FORWARD
 > iptables -A FORWARD -m tcp -p tcp -s 0/0 --sport 80 -d 192.168.0.1/24 --syn -j D
 > ROP
 > iptables -A FORWARD -m tcp -p tcp -s 192.168.0.1/24 --sport  80 -d 0/0 -j ACCEPT
 > iptables -A FORWARD -m tcp -p tcp -d 192.168.0.1/24 --dport 80 -s 0/0 -j ACCEPT
 > iptables -A FORWARD -i eth1 -j ACCEPT
 > iptables -A FORWARD -i eth0 -m state --state  ESTABLISHED,RELATED -j ACCEPT
 > iptables -t nat -P POSTROUTING  DROP
 > iptables -t nat -A POSTROUTING   -o eth0  -j MASQUERADE
 >
 > A na configu IP w WinXp  mam wpisane:
 > IP 192.168.0.2
 > Maska 255.255.255.0
 > Brama nie wiem dokladnie co wpisac ktory numer ja wpisuje brame ktora mam wpisana w eth0 i eth1
 > od internetu zewnetrznego
 >
 > Na Linuxie mam internet.Z XP moge sie polaczyc z linuxem.
 > Na Xp nie moge odbierac Internetu.
 > Pytania mam takie.
 > Czy cos jest zle z tym configiem?
 > Jak maskowac IP wewnetrzne?
 > Czy moje wpisy o maskaowaniu sa dobre?
 > Jak pisze o otwarciu portu 80 na numery sieci lokalnej czy podaje dobre IP?Jest to w Firewallu
 > Mam na Xp Firewalla.Moze to prowadzic do konfliktu pobierania Internetu z innej maszyny.Nie
 > moge pingowac jak jest wlaczony ale jak wylanczam to juz moge
 > Prosze o Pomoc.
 > Pozdrawiam

darvark

  • Gość
Problem z udostepnianiem internetu na sieci
« Odpowiedź #7 dnia: 2005-12-19, 14:15:01 »
po pierwsze masquerade uzywa sie tylko jesli masz zmienne ip (np w neostradzie)

http://www.jtz.org.pl/Inne/linux24-nat.html  poczytaj tutaj. nieduzo czytania a naprawde duzo wiedzy. tam bedziesz mial podane prawie ze gotowe rozwiazanie.

na przyklad
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to

Skankiyam

  • Gość
Problem z udostepnianiem internetu na sieci
« Odpowiedź #8 dnia: 2005-12-19, 15:48:17 »
2005-12-19 14:15:01 darvark napisał:

>  po pierwsze masquerade uzywa sie tylko jesli masz zmienne ip (np w neostradzie)
 >
 > http://www.jtz.org.pl/Inne/linux24-nat.html  poczytaj tutaj. nieduzo czytania a naprawde duzo
 > wiedzy. tam bedziesz mial podane prawie ze gotowe rozwiazanie.
 >
 > na przyklad
 > iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to
 >
Dzieki ze zainteresowalws sie moim problemem.Juz sobie poradzilem dodalem takie wpisy

iptables -t nat -P POSTROUTING  DROP
iptables -t nat -A POSTROUTING   -o eth0  -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.0.2 -o ppp0 -j MASQUERADE

na Winie Xp
Podalem takiego configa
IP 192.169.0.2
Maska 255.255.255.0
Brama numer IP sieciowki eth1
DNS IP ktory dostalem od uslugodawcy
I poszlo mam necika na 2 kompach i jestem bardzo zadowolony:) Pozdrawiam serdeczne wszystkich.
Wesołych Swiat.