Archive for the ‘protosocket’ Tag

Protosocketler

Nedir ?

  • Protosocket kütüphanesi; uip stack için, geleneksel BSD socket arayüzünü sağlamaktadır.
  • Protosocket kütüphanesi, sequential şekilde çalışmaktadır.
  • Sadece TCP bağlantılarında çalışmaktadır.
  • Protosocket kütüphanesi, ardışıl kontrol akışı sağlamak için [[Protothread]] kullanmaktadır.
  • Protosocket kütüphanesi, verileri tekrar göndermeyi düşünmeden gönderme imkanı sağlayan fonksiyonlar sağlamaktadır.
  • Her protosocket, protothread olarak çalıştığı için PSOCK_BEGIN() ile başlamalıdır. ve PSOCK_EXIT() ile bitmektedir.

Gerekli Kütüphaneler

psock.h

Fonksiyonlar

  •  kullanılan struct yapısı örneği
// struct tanımlanıyor
typedef struct hello_world_state {
  struct psock p;
  char inputbuffer[10];
  char name[40];
} uip_tcp_appstate_t;
// struct kullanılmadan önce ayarlanıyor
struct hello_world_state *s = &(uip_conn->appstate);
  •  Protosocketi ilklendirmek
PSOCK_INIT(&s->p, s->inputbuffer, sizeof(s->inputbuffer));
  • protosocket kullanılmadan çağırılmalıdır.
  • İlk parametre; protosockette pointerdır.
  • protosocket için input buffer a pointerdır.
  • input buffer boyutudur.

; Protosocketi başlatmak için

PSOCK_BEGIN(&s->p);
  • Diğer protosocket çağırılarından önce çağrılmalıdır.
  • parametre; başlatılacak olan protosockete pointerdır.

; String göndermek için

char konsol [] = "TI > ";
PSOCK_SEND_STR(&s->p, konsol);
  • ilk parametre; protosockette pointerdır.
  • İkinci parametre gönderilmek istenen stringdir.

; Karşıdan gönderileni almak için

PSOCK_READTO(&s->p, '\n');
  • Belirtilen karaktere kadar okuma yapılıyor.
  • Karşıdan gönderilene struct yardımıyla ulaşılabiliyor.
  • ilk parametre; protosockette pointerdır.
  • İkinci parametre, okumanın durdulacağı karakter.

; Socketi kapatmak için

PSOCK_CLOSE(&s->p);
  • protosocketi kapatır.

! Kaynaklar

[1] uip-1.0-refman
[2] uip hello-world örneği
[3] luminary enet_uip örneği