Small Network Library (SNL) – v0.2testing

Pod koniec zeszłego roku pierwszy raz zaprezentowałem swoją bibliotekę publicznie. Dzisiaj postanowiłem spakować wszystko do jednej paczki i wydać jako wersję 0.2. Zaznaczam, że kod jest jeszcze we wczesnej fazie rozwoju!

SNL (Small Network Library) to mała biblioteka napisana w języku C, implementująca obsługę komunikacji w sieci. Jest ściśle związana z biblioteką GLib, dzięki czemu dobrze integruje się ze środowiskiem programistycznym GNOME’a. Oferuje zestaw obiektów opartych o system obiektowości GObject jak i niskopoziomowe API zbliżone do tzw. Berkley Sockets API. Obsługiwane protokoły to: TCP, UDP oraz SCTP. Wspierane są adresy IP w wersji 4 i 6.

Od poprzedniej wersji w kodzie zaszły bardzo poważne zmiany. Jak już mówiłem kod jest jeszcze we wczesnej fazie rozwoju i nie należy go stosować w aplikacjach.

Uogólniony ChangeLog od poprzedniej wersji:

  • ustabilizowanie kodu
  • biblioteka bezpiecznie zachowuje się w aplikacjach wielowątkowych
  • dopracowana obsługa adresów i typu “SnlAddress”
  • początek implementacji specyficznych właściwości protokołu SCTP
  • nowy typ “SnlSctpPeer”
  • początek implementacji obsługi opcji gniazd
  • uproszczona niskopoziomowa implementacja API obsługującego gniazda
  • wiele typów i interfejsów zostało rozszerzonych o nowe właściwości i metody

Biblioteka jest rozpowszechniana na zasadach licencji LGPL.

Ponownie wszystkich chętnych do pomocy zapraszam do współpracy. Namiary do mnie znajdziecie na stronie projektu.

Tutaj można pobrać paczkę ze źródłami
Repozytorium projektu

żadnych reklam, sama wiedza.

Zarejestruj się na BEZPŁATNY NEWSLETTER i raz w tygodniu otrzymuj najważniejsze wiadmości
ze świata IT, nowych technologii i kryptowalut.

Bez reklam.

21 odpowiedzi na „Small Network Library (SNL) – v0.2testing”
  1. Awatar mimi
    mimi

    może zacznijmy od co to znaczy "nawiązywać połaczenia internetowe" ? 🙂

    1. Awatar Goofy
      Goofy

      Właśnie, nie wiem jak to wytłumaczyć. Wiem o cho chodzi, ale nie potrafię tego zapisać w dwóch słowach :/

      Poprawiłem trochę opis, powinno być nieco lepiej. 😉

    2. Awatar mimi
      mimi

      az się prosił u mnie przecinek lub jakiś : ale – tak sie udało.
      😀
      Nie zmieniaj treści! Chodzi o (jakies) wytłumaczenie. Trochę programuję ale to (j.w) nic mi nie mówi.
      Napisałeś dużo ale nie mam pojęcia czy mi się może przydać, bo nie wiem co to jest. Ja rozumiem, że wielu – wie – ale oni pewnie nie potrzebują tego ?

      1. Awatar Goofy
        Goofy

        Jezeli chcesz zeby dwie kopie twojego programu uruchomione na dwoch roznych komputerach mogly komunikowac sie ze soba przez internet (lub siec lokalna) to wlasnie tu przyda ci sie SNL.

        Tzn. jeszcze nie teraz, najpierw musze przyjac jakos konkretna postac, bo narazie jest plynna masa ;P

        1. Awatar mimi
          mimi

          Chciałem się dowiedzieć czym się różni zastosowanie bibioteki od "zwykłego" otwarcia portów i wys(y)łania ciągu bajtów. Pilnuje przepełnienia bufora, wprowadza jakis standard komend, szyfruje, wprowadza jakieś zabezpiecznia/autoryzację, można jej jakoś użyć (np. jak ODBC pod bazy) czy zapewnia wyższą warstwę typu: A pyta B jaki jest stan jego totalizerów bez wchodzenia w szczegóły implementacji samego połączenia. itp. ? Innymi słowami – co daje bibioteka, bo "jakąś" komunikację osiągnąć nie jest trudno.
          O cos takiego mi chodziło.
          .
          p.s. Bo jezeli jest to cos na wzór: "A pyta B" – to jest to coś co mnie interesuje!

        2. Awatar Goofy
          Goofy

          Szyfrowanie nie jest zaimplementowane i pewnie prędko się to nie zmieni, chyba, że ktoś mi pomoże. Moja wiedza na temat kryptografii jest dosyć ograniczona.

          Pisanie tej biblioteki jest dla mnie sposobem na naukę programowania sieciowego. Powiedzmy, że biblioteka przedstawia stan mojej wiedzy 🙂

          Kod zwraca uwagę na rozmiar danych, które przyjmuję, więc przepełnienie bufora nie powinno mieć miejsca. Choć głowy nie dam, ze gdzieś się nie machnąłem…

          Jeżeli chciałbyś coś zaproponować albo zapytać mnie o coś to lepiej skontaktuj się ze mną osobiście. Na stronie programu znajdziesz mój adres e-mail.

  2. Awatar ooowned
    ooowned

    Z całym szacunkiem dla Ciebie, ale nie rozumiem po co pisać coś co już jest. Czyżby tylko po to żeby zrobić to po swojemu ? Osobiscie uważam że szkoda czasu.

    1. Awatar Goofy
      Goofy

      Niby sa biblioteki gnet i gnetwork, ale obie nie sa od dawna rozwijane i troche osiadl na nich kurz. Bardzo ciekawy protokol SCTP nie jest obslugiwany przez zadna z nich. Ja nie znam innej biblioteki, ktora spelnia podobne funkcje co moje wypociny. Podaj jej nazwe, bo ja tez nie chce pisac czegos co juz jest 😉

    2. Awatar Theq
      Theq

      Tak sie najlatwiej/najlepiej czegos nauczyc

    3. Awatar mario
      mario

      Wydawało mi się, że żyjemy w wolnym kraju?

    4. Awatar Goofy
      Goofy

      Druga sprawa to to, ze jestem (poki co, bo studia zaczynam za rok) programista z zamilowania. W koncu skoro ucze sie programowania sieciowego to dlaczego pokazac tego innym, moze sie komus jednak przyda?

    5. Awatar abc
      abc

      Jeśli jest – to może jakieś linki? Byłyby zdecydowanie na miejscu

    6. Awatar Memphis
      Memphis

      Wyczerpująca odpowiedź na to pytanie jest zawsze jedna i ta sama: "Bo mogę."

      1. Awatar trompele
        trompele

        albo bo umiem

    7. Awatar Vogel
      Vogel

      Ja bym raczej prosił o jeszcze kilka słów 'dlaczego ta biblioteka jest lepsza od pozostałych'.

      Powodzenia w dalszym pisaniu 😉

      1. Awatar Goofy
        Goofy

        Lepsza, gorsza, wszytsko to kewstia gustu… Wystarczy popatrzec na liste mozliwosci. Np. zadna inna bublioteka nie obsluguje protokolu SCTP i synchronicznych typow opartych na GObject.

    8. Awatar jellonek
      jellonek

      ztcp wyjasnial w komentarzach do poprzedniego anonsa: nie tylko dlatego ze w ten sposob moze sie czegos sam nauczyc, bo moze sie komus to przydac, ale – i tu potwierdzenie ze rzeczywiscie sie moze przydac – w glib/gobject nie ma swojego odpowiednika z prawdziwego zdazenia. tj. niby jest gnet – ale ztcp nie jest oparty o gobject (duzy minus) i, uogulniajac, jest poprostu ukierunkowany na odbytnice…

      1. Awatar Goofy
        Goofy

        Czyżbym jednak trafił tym projektem w niszę… o_O

        Z zadowoleniem mogę powiedzieć, że zgłosił się pierwszy chętny do pomocy. Zacieśniamy z Ukrainą głębsze więzi niż organizacja Euro 2012. Ów człowiek mieszka na Ukrainie 🙂

        1. Awatar rezor
          rezor

          A więc można powiedzieć, że biblioteka działa – nawiązaliście dzięki niej połączenie internetowe 😀

    9. Awatar taki_jeden
      taki_jeden

      Zgadzam się, że są 2 podejścia: 1) rozwijanie dostępnego kodu oraz 2) napisanie swojej własnej implementacji wybranego zagadnienia. Obydwa są godne pochwały bez względu na prezentowany poziom, czy nawet podejście do realizacji.

      Gratuluję Goofiemu pomysłu i determinacji, to jest bardzo efektywny sposób uczenia się. A to czy SNL jest czy nie jest atrakcyjna zweryfikuje "rynek" wolnego oprogramowania. Tymczasem życzę autorowi wytrwałości i pozytywnych owoców pracy!

  3. Awatar MichalK
    MichalK

    No i bardzo dobrze, nie zrazaj sie marudnymi komentarzami

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *