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