TCP

Bu modül, TCP iletişimini kontrol eden işlevler içerir.

Özet

Sıralamalar

anonymous enum enum
otTcpConnect() işlevine iletilen işaretleri tanımlar.
anonymous enum enum
otTcpSendByReference öğesine iletilen işaretleri tanımlar.
otTcpDisconnectedReason enum
otTcpIncomingConnectionAction{
  OT_TCP_INCOMING_CONNECTION_ACTION_ACCEPT,
  OT_TCP_INCOMING_CONNECTION_ACTION_DEFER,
  OT_TCP_INCOMING_CONNECTION_ACTION_REFUSE
}
enum
Gelen bağlantı işlemlerini tanımlar.

Türdefler

otLinkedBuffer typedef
TCP ile kullanılacak bağlı bir arabellek yapısı.
otTcpAcceptDone)(otTcpListener *aListener, otTcpEndpoint *aEndpoint, const otSockAddr *aPeer) typedef
void(*
Bu geri çağırma, TCP bağlantısının artık iki yönlü iletişim için hazır olduğunu gösterir.
otTcpAcceptReady)(otTcpListener *aListener, const otSockAddr *aPeer, otTcpEndpoint **aAcceptInto) typedef
Bu geri çağırma, bu TCP işleyiciyle eşleşen gelen bir bağlantının geldiğini gösterir.
otTcpDisconnected)(otTcpEndpoint *aEndpoint, otTcpDisconnectedReason aReason) typedef
void(*
Bu geri çağırma, bağlantının koptuğunu ve artık kullanılmaması gerektiğini veya bir bağlantının TIME-WAIT durumuna girdiğini belirtir.
otTcpDisconnectedReason typedef
enum otTcpDisconnectedReason
otTcpEndpoint typedef
struct otTcpEndpoint
otTcpEndpointInitializeArgs typedef
otTcpEndpointInitialize() işlevinin bağımsız değişkenlerini içerir.
otTcpEstablished)(otTcpEndpoint *aEndpoint) typedef
void(*
Bu geri çağırma, uygulamaya TCP 3 yönlü el sıkışmanın tamamlandığını ve bağlantının kurulduğunu bildirir.
otTcpForwardProgress)(otTcpEndpoint *aEndpoint, size_t aInSendBuffer, size_t aBacklog) typedef
void(*
Bu geri çağırma, verileri gönderme arabelleğinden alıcıya aktarma işleminde yönlendirme ilerlemesi yaşandıysa uygulamayı bilgilendirir.
otTcpIncomingConnectionAction typedef
Gelen bağlantı işlemlerini tanımlar.
otTcpListener typedef
struct otTcpListener
otTcpListenerInitializeArgs typedef
otTcpListenerInitialize() işlevinin bağımsız değişkenlerini içerir.
otTcpReceiveAvailable)(otTcpEndpoint *aEndpoint, size_t aBytesAvailable, bool aEndOfStream, size_t aBytesRemaining) typedef
void(*
Bu geri çağırma, alma arabelleğinden tüketilebilecek bayt sayısını gösterir.
otTcpSendDone)(otTcpEndpoint *aEndpoint, otLinkedBuffer *aData) typedef
void(*
Bu geri çağırma, sağlanan aData içindeki verilerin bağlantı eşi tarafından onaylandığını ve aData ile içerdiği verilerin uygulama tarafından geri alınabileceğini uygulamaya bildirir.

İşlevler

otTcpAbort(otTcpEndpoint *aEndpoint)
Bu TCP uç noktasıyla ilişkili TCP bağlantısını zorla sonlandırır.
otTcpBind(otTcpEndpoint *aEndpoint, const otSockAddr *aSockName)
TCP uç noktasını bir IP adresine ve bağlantı noktasına bağlar.
otTcpCommitReceive(otTcpEndpoint *aEndpoint, size_t aNumBytes, uint32_t aFlags)
TCP yığınına, uygulamanın alma arabelleğinin başında aNumBytes baytlık veri işlemeyi bitirdiğini ve TCP yığınının bu baytları alma arabelleğinde tutmaya devam etmesi gerekmediğini bildirir.
otTcpConnect(otTcpEndpoint *aEndpoint, const otSockAddr *aSockName, uint32_t aFlags)
Bu bağlantı için uzak ana makineyi ve bağlantı noktasını kaydeder.
otTcpEndpointDeinitialize(otTcpEndpoint *aEndpoint)
Bu TCP uç noktasını başlatır.
otTcpEndpointGetContext(otTcpEndpoint *aEndpoint)
void *
Başlatma sonrasında aEndpoint ile ilişkilendirilmiş bağlam işaretçisini alır.
otTcpEndpointGetInstance(otTcpEndpoint *aEndpoint)
Başlatma sonrasında aEndpoint ile ilişkilendirilen Örneği alır.
otTcpEndpointInitialize(otInstance *aInstance, otTcpEndpoint *aEndpoint, const otTcpEndpointInitializeArgs *aArgs)
Bir TCP uç noktasını başlatır.
otTcpGetLocalAddress(const otTcpEndpoint *aEndpoint)
const otSockAddr *
TCP uç noktasının yerel ana makinesine ve bağlantı noktasına işaretçi sağlar.
otTcpGetPeerAddress(const otTcpEndpoint *aEndpoint)
const otSockAddr *
TCP uç noktasının eşinin ana makinesine ve bağlantı noktasına işaretçi sağlar.
otTcpListen(otTcpListener *aListener, const otSockAddr *aSockName)
Belirtilen IP adresi ve bağlantı noktasıyla eşleşen gelen TCP bağlantılarının, bu TCP dinleyicisinin geri çağırmalarını tetiklemesine neden olur.
otTcpListenerDeinitialize(otTcpListener *aListener)
Bu TCP işleyiciyi başlatır.
otTcpListenerGetContext(otTcpListener *aListener)
void *
Başlatma sonrasında aListener ile ilişkilendirilmiş bağlam işaretçisini alır.
otTcpListenerGetInstance(otTcpListener *aListener)
Başlatma sonrasında aListener ile ilişkilendirilen Örneği alır.
otTcpListenerInitialize(otInstance *aInstance, otTcpListener *aListener, const otTcpListenerInitializeArgs *aArgs)
Bir TCP işleyiciyi başlatır.
otTcpReceiveByReference(otTcpEndpoint *aEndpoint, const otLinkedBuffer **aBuffer)
Uygulamaya, TCP alma arabelleğinde bulunan verileri referans alan bağlı bir arabellek zinciri sağlar.
otTcpReceiveContiguify(otTcpEndpoint *aEndpoint)
Alma arabelleğini bellekte tamamen bitişik olacak şekilde yeniden düzenler.
otTcpSendByExtension(otTcpEndpoint *aEndpoint, size_t aNumBytes, uint32_t aFlags)
Gönderme arabelleğindeki son otLinkedBuffer uzunluğunu belirtilen miktarda uzatarak gönderme arabelleğine veri ekler.
otTcpSendByReference(otTcpEndpoint *aEndpoint, otLinkedBuffer *aBuffer, uint32_t aFlags)
aBuffer tarafından işaret edilen bağlı arabelleğin başvuruda bulunduğu verileri gönderme arabelleğine ekler.
otTcpSendEndOfStream(otTcpEndpoint *aEndpoint)
Bağlantı eşine, bu TCP uç noktasının daha fazla veri göndermeyeceğini bildirir.
otTcpStopListening(otTcpListener *aListener)
Bu TCP işleyicinin gelen bağlantıları dinlemeyi durdurmasına neden olur.

Yapılar

otLinkedBuffer

TCP ile kullanılacak bağlı bir arabellek yapısı.

otTcpEndpoint

TCP uç noktasını temsil eder.

otTcpEndpointInitializeArgs

otTcpEndpointInitialize() işlevinin bağımsız değişkenlerini içerir.

otTcpListener

TCP işleyiciyi temsil eder.

otTcpListenerInitializeArgs

otTcpListenerInitialize() işlevinin bağımsız değişkenlerini içerir.

Sıralamalar

anonim sıralama

 anonymous enum

otTcpConnect() işlevine iletilen işaretleri tanımlar.

anonim sıralama

 anonymous enum

otTcpSendByReference öğesine iletilen işaretleri tanımlar.

otTcpDisconnectedReason

 otTcpDisconnectedReason

otTcpIncomingConnectionAction

 otTcpIncomingConnectionAction

Gelen bağlantı işlemlerini tanımlar.

Bu parametre, otTcpAcceptReady() geri çağırmasında kullanılır.

Özellikler
OT_TCP_INCOMING_CONNECTION_ACTION_ACCEPT

Gelen bağlantıyı kabul edin.

OT_TCP_INCOMING_CONNECTION_ACTION_DEFER

Gelen bağlantıyı erteleyin (sessizce yoksayın).

OT_TCP_INCOMING_CONNECTION_ACTION_REFUSE

Gelen bağlantıyı reddedin.

Türdefler

otLinkedBuffer

struct otLinkedBuffer otLinkedBuffer

TCP ile kullanılacak bağlı bir arabellek yapısı.

Tek bir otLinkedBuffer yapısı, mData ve mLength aracılığıyla bellekte bir bayt dizisine referans verir. mNext alanı, otLinkedBuffer yapıları zinciri oluşturmak için kullanılır.

otTcpAcceptDone

void(* otTcpAcceptDone)(otTcpListener *aListener, otTcpEndpoint *aEndpoint, const otSockAddr *aPeer)

Bu geri çağırma, TCP bağlantısının artık iki yönlü iletişim için hazır olduğunu gösterir.

TCP Hızlı Açma söz konusu olduğunda bu, TCP bağlantısı el sıkışması tamamlanmadan önce olabilir. Uygulamaya, hem bağlantıyı kabul eden TCP dinleyicisi hem de bağlantının kabul edildiği TCP uç noktası için bağlam işaretçileri sağlanır. Sağlanan bağlam, TCP dinleyicisiyle ilişkilendirilen bağlamdır.

Ayrıntılar
Parametreler
[in] aListener
Gelen bağlantıyla eşleşen TCP işleyici.
[in] aEndpoint
Gelen bağlantının kabul edildiği TCP uç noktası.
[in] aPeer
gelen bağlantının kaynağı olan ana makine ve bağlantı noktasıdır.

otTcpAcceptReady

otTcpIncomingConnectionAction(* otTcpAcceptReady)(otTcpListener *aListener, const otSockAddr *aPeer, otTcpEndpoint **aAcceptInto)

Bu geri çağırma, bu TCP işleyiciyle eşleşen gelen bir bağlantının geldiğini gösterir.

Tipik yanıt, uygulamanın gelen bağlantıyı kabul etmesidir. Bunu yapmak için aAcceptInto, gelen bağlantıyı kabul etmek için içine alınacak otTcpEndpoint işaretçisini bir işaretçiyle doldurur. Bu otTcpEndpoint zaten otTcpEndpointInitialize() kullanılarak başlatılmış olmalıdır. Ardından uygulama OT_TCP_INCOMING_CONNECTION_ACTION_ACCEPT değerini döndürür.

Alternatif olarak, uygulama gelen bağlantıyı kabul etmeyi reddedebilir. Uygulamanın bunu yapmanın iki yolu vardır. Öncelikle, uygulama OT_TCP_INCOMING_CONNECTION_ACTION_DEFER değerini döndürürse OpenThread bağlantı kurma isteğini sessizce yok sayar. Bağlantı eşi büyük olasılıkla isteği yeniden iletir ve bu noktada geri çağırma tekrar çağrılır. Kaynaklar şu anda bağlantıyı kabul etmek için müsait değilse bu önemlidir, ancak bağlantı eşi bağlantı kurma girişimini tekrar ilettiğinde kullanılabilir olabilir. İkinci olarak, uygulama OT_TCP_INCOMING_CONNECTION_ACTION_REFUSE değerini döndürürse OpenThread, bağlantı kurmayı deneyen ana makineye bir "bağlantı reddedildi" mesajı gönderir. Uygulama gelen bağlantıyı reddederse aAcceptInto alanının doldurulması gerekmez.

Ayrıntılar
Parametreler
[in] aListener
Gelen bağlantıyla eşleşen TCP işleyici.
[in] aPeer
Gelen bağlantının kaynağı olan ana makine ve bağlantı noktası.
[out] aAcceptInto
Gelen bağlantının kabul edileceği TCP uç noktası.
İadeler
Gelen bağlantının nasıl işleneceğinin açıklaması.

otTcpDisconnected

void(* otTcpDisconnected)(otTcpEndpoint *aEndpoint, otTcpDisconnectedReason aReason)

Bu geri çağırma, bağlantının koptuğunu ve artık kullanılmaması gerektiğini veya bir bağlantının TIME-WAIT durumuna girdiğini belirtir.

Bir bağlantı kurma girişimi (otTcpConnect() çağrısı yapılarak başlatılan) başarısız olursa veya sonrasında herhangi bir noktada (bağlantı zaman aşımına uğrarsa veya bağlantı eşinden RST segmenti alınırsa) gerçekleşebilir. Bu geri çağırma tetiklendikten sonra, uygulamanın bu bağlantı için sağladığı tüm kaynaklar (yani, başvurdukları ancak TCP uç noktasının kendisi veya alıcı arabellekleri için alan değil, otLinkedBuffers ve bellek) geri alınabilir. Bir bağlantının TIME-WAIT durumuna girmesi durumunda, bu geri arama bir kez TIME-WAIT durumuna girdikten sonra (OT_TCP_DISCONNECTED_REASON_TIME_WAIT ile) ve TIME-WAIT durumu sona erdiğinde (OT_TCP_DISCONNECTED_REASON_NORMAL ile) iki kez çağrılır.

Ayrıntılar
Parametreler
[in] aEndpoint
Bağlantısı kaybedilen TCP uç noktası.
[in] aReason
Bağlantının kesilme nedeni.

otTcpDisconnectedReason

enum otTcpDisconnectedReason otTcpDisconnectedReason

otTcpEndpoint

struct otTcpEndpoint otTcpEndpoint

otTcpEndpointInitializeArgs

struct otTcpEndpointInitializeArgs otTcpEndpointInitializeArgs

otTcpEndpointInitialize() işlevinin bağımsız değişkenlerini içerir.

otTcpEstablished

void(* otTcpEstablished)(otTcpEndpoint *aEndpoint)

Bu geri çağırma, uygulamaya TCP 3 yönlü el sıkışmanın tamamlandığını ve bağlantının kurulduğunu bildirir.

Ayrıntılar
Parametreler
[in] aEndpoint
Bağlantısı kurulan TCP uç noktası.

otTcpForwardProgress

void(* otTcpForwardProgress)(otTcpEndpoint *aEndpoint, size_t aInSendBuffer, size_t aBacklog)

Bu geri çağırma, verileri gönderme arabelleğinden alıcıya aktarma işleminde yönlendirme ilerlemesi yaşandıysa uygulamayı bilgilendirir.

Bu geri çağırma, doğru TCP işlemi için gerekli değildir. Çoğu uygulama, TCP yığınının kullanılması tamamlandıktan sonra bağlı arabellekleri geri almak için otTcpSendDone() geri çağırmasından yararlanabilir. Bu geri çağırmanın amacı, bağlantının veri eşine veri aktarımında nasıl ilerleme kaydettiği ile ilgili daha ayrıntılı bilgilerden yararlanan gelişmiş uygulamaları desteklemektir.

Bu geri çağırma işleminin işlemi, TCP'nin gönderme arabelleğiyle yakından ilişkilidir. Gönderme arabelleği iki bölgeye sahip olarak anlaşılabilir. İlk olarak, gönderme arabelleğinin başında (önde) "işlem devam ediyor" bölgesi vardır. Alıcıya gönderilen ancak henüz onaylanmayan verilere karşılık gelir. İkinci olarak, gönderme arabelleğinde bulunan ancak "yolda" bölgesinde olmayan tüm verilerden oluşan "iş listesi" bölgesi vardır. "İş listesi" bölgesi, göndermek için sıraya alınan ancak henüz gönderilmemiş verilere karşılık gelir.

Geri çağırma, iki etkinlik türüne yanıt olarak çağrılır. Öncelikle, gönderme arabelleğinin "işlem devam eden" bölgesi küçülebilir (ör. alıcı daha önce gönderdiğimiz verileri onayladığında). İkinci olarak, gönderme arabelleğinin "iş listesi" bölgesi küçülebilir (ör. yeni veriler gönderilir). Bu iki koşul, bağlantı eşinden gelen ACK segmentine yanıt olarak genellikle aynı anda ortaya çıkar. Bu nedenle, tek bir geri çağırmada birleştirilir.

TCP yığını, yalnızca gönderme arabelleğinin kuyruğundaki aInSendBuffer baytlarını kullanır. aInSendBuffer değerinin x miktarında azalması, daha önce gönderme arabelleğinin başında bulunan x ek baytın artık gönderme arabelleğinin parçası olmadığı ve artık uygulama tarafından geri alınabileceği (yani üzerine yazılabileceği) anlamına gelir. otLinkedBuffer yapısının kendisinin yalnızca referans verdiği tüm baytlar artık gönderme arabelleğinin parçası olmadığında geri alınabileceğini unutmayın.

Bu geri çağırma, otTcpSendDone() öğesini şu anlamda dahil eder: Uygulamalar, aInSendBuffer ile bağlı arabelleklerde kaç bayt bulunduğunu karşılaştırarak bağlı arabelleklerin ne zaman geri alınabileceğini belirleyebilir. Bununla birlikte, hangi otLinkedBuffers'ın geri alınabileceğini doğrudan bildiren otTcpSendDone() komutunun kullanımının çok daha basit olmasını bekliyoruz. Her iki geri çağırma da kaydedilirse ve aynı etkinlik tarafından tetiklenirse (ör. aynı ACK segmenti alındıysa) önce otTcpSendDone() geri çağırması, ardından bu geri çağırma tetiklenir.

Ayrıca bu geri çağırma, gönderme arabelleğinde henüz kaç bayt verinin yayınlanmadığını gösteren aBacklog sağlar. Gönderme arabelleğine yalnızca kısa süre içinde gönderileceğine dair bir güvence varsa veri eklemek isteyen uygulamalar için verileri yalnızca aBacklog yeterince küçük (0 veya 0'a yakın) olduğunda göndermek isteyebilirsiniz. Örneğin, bir uygulama, veri yığını oluşturmaktan kaçınmak için verileri bırakarak veya birleştirerek sıra oluşturmaya tepki verebilmek için aBacklog kullanabilir.

Pozitif bayt sayısı içeren otTcpSendByReference() veya otTcpSendByExtension() çağrısından sonra gönderme arabelleğine eklenen baytların ne zaman gönderildiğini belirtmek üzere otTcpForwardProgress() geri çağırmasının çağrılması garanti edilir. Baytlar gönderme arabelleğine eklendikten hemen sonra (bu baytların bazıları hemen gönderilirse, bu da iş listesi azaltılır) veya ileride (bağlantı verilerin bir kısmını veya tamamını gönderdiğinde, iş yükünü azaltarak) otTcpForwardProgress() çağrısı yapılabilir. "Hemen" ifadesi ile geri çağırmanın bir görev uygulamasında yürütülmek üzere hemen planlandığı anlamına gelir. Yeniden girişle ilgili karmaşıklığı önlemek için otTcpForwardProgress() geri çağırması hiçbir zaman otTcpSendByReference() veya otTcpSendByExtension() işlevlerinden doğrudan çağrılmaz.

Ayrıntılar
Parametreler
[in] aEndpoint
Bağlantının TCP uç noktası.
[in] aInSendBuffer
Gönderme arabelleğindeki bayt sayısı ("çalışıyor" ve "iş listesi" bölgelerinin toplamı).
[in] aBacklog
Göndermek için sıraya alınan ancak henüz gönderilmemiş baytların sayısı ("iş listesi" bölgesi).

otTcpIncomingConnectionAction

enum otTcpIncomingConnectionAction otTcpIncomingConnectionAction

Gelen bağlantı işlemlerini tanımlar.

Bu parametre, otTcpAcceptReady() geri çağırmasında kullanılır.

otTcpListener

struct otTcpListener otTcpListener

otTcpListenerInitializeArgs

struct otTcpListenerInitializeArgs otTcpListenerInitializeArgs

otTcpListenerInitialize() işlevinin bağımsız değişkenlerini içerir.

otTcpReceiveAvailable

void(* otTcpReceiveAvailable)(otTcpEndpoint *aEndpoint, size_t aBytesAvailable, bool aEndOfStream, size_t aBytesRemaining)

Bu geri çağırma, alma arabelleğinden tüketilebilecek bayt sayısını gösterir.

Alma arabelleğine her bayt eklendiğinde ve akışın sonuna ulaşıldığında çağrılır. Akışın sonuna ulaşıldıysa (yani bağlantı eşi, yazma için bağlantı sonunu kapattığı için başka veri okunamaz hale gelirse) aEndOfStream doğrudur. Son olarak aBytesRemaining, gelen ek verileri saklamak için alma arabelleğinde ne kadar kapasite kaldığını belirtir.

Ayrıntılar
Parametreler
[in] aEndpoint
Bağlantının TCP uç noktası.
[in] aBytesAvailable
Bağlantının alma arabelleğindeki bayt sayısı.
[in] aEndOfStream
Bağlantının alma arabelleğinde bulunanların ötesinde ek verilerin alınıp alınamayacağını belirtir.
[in] aBytesRemaining
Alma arabelleği dolmadan önce alınabilecek ek bayt sayısı.

otTcpSendDone

void(* otTcpSendDone)(otTcpEndpoint *aEndpoint, otLinkedBuffer *aData)

Bu geri çağırma, sağlanan aData içindeki verilerin bağlantı eşi tarafından onaylandığını ve aData ile içerdiği verilerin uygulama tarafından geri alınabileceğini uygulamaya bildirir.

aData öğesinin, otTcpSendByExtension() aracılığıyla etkilenen uzantılar da dahil olmak üzere otTcpSendByReference() aracılığıyla TCP'ye aktarılanlarla aynı olması garanti edilir.

Ayrıntılar
Parametreler
[in] aEndpoint
Bağlantının TCP uç noktası.
[in] aData
Geri alınabilecek bir otLinkedBuffer işaretçisi.

İşlevler

otTcpAbort

otError otTcpAbort(
  otTcpEndpoint *aEndpoint
)

Bu TCP uç noktasıyla ilişkili TCP bağlantısını zorla sonlandırır.

Bu işlem, TCP uç noktasını hemen başka bir bağlantı için serbest bırakır ve gönderme ve alma arabelleklerini boşaltır. Böylece, otTcpSendByReference() ve otTcpSendByExtension() çağrılarında uygulama tarafından sağlanan tüm verilerin sahipliğini tekrar uygulamaya aktarır. TCP uç noktasının geri çağırmaları ve alma arabelleği için belleği, TCP uç noktasıyla ilişkili kalır.

Ayrıntılar
Parametreler
[in] aEndpoint
İptal edilecek TCP uç noktasını temsil eden, TCP uç nokta yapısına işaret eden işaretçi.
Döndürülen Değerler
OT_ERROR_NONE
TCP uç noktasının bağlantısı başarıyla iptal edildi.
OT_ERROR_FAILED
TCP uç noktasının bağlantısı iptal edilemedi.

otTcpBind

otError otTcpBind(
  otTcpEndpoint *aEndpoint,
  const otSockAddr *aSockName
)

TCP uç noktasını bir IP adresine ve bağlantı noktasına bağlar.

Ayrıntılar
Parametreler
[in] aEndpoint
Bağlanacak TCP uç nokta yapısını gösteren işaretçi.
[in] aSockName
Bu TCP uç noktasının bağlanacağı adres ve bağlantı noktası.
Döndürülen Değerler
OT_ERROR_NONE
TCP uç noktasına başarıyla bağlanıldı.
OT_ERROR_FAILED
TCP uç noktası bağlanamadı.

otTcpCommitReceive

otError otTcpCommitReceive(
  otTcpEndpoint *aEndpoint,
  size_t aNumBytes,
  uint32_t aFlags
)

TCP yığınına, uygulamanın alma arabelleğinin başında aNumBytes baytlık veri işlemeyi bitirdiğini ve TCP yığınının bu baytları alma arabelleğinde tutmaya devam etmesi gerekmediğini bildirir.

Ayrıntılar
Parametreler
[in] aEndpoint
Verilerin alınacağı TCP uç noktasını temsil eden TCP uç nokta yapısına işaret eden işaretçi.
[in] aNumBytes
Tüketilen bayt sayısı.
[in] aFlags
Bu işlemle ilgili seçenekleri belirten işaretler (henüz yok).
Döndürülen Değerler
OT_ERROR_NONE
Alma işlemi başarıyla tamamlandı.
OT_ERROR_FAILED
Alma işlemi tamamlanamadı.

otTcpConnect

otError otTcpConnect(
  otTcpEndpoint *aEndpoint,
  const otSockAddr *aSockName,
  uint32_t aFlags
)

Bu bağlantı için uzak ana makineyi ve bağlantı noktasını kaydeder.

TCP Hızlı Açma, aFlags kullanılarak etkinleştirilmeli veya devre dışı bırakılmalıdır. Devre dışı bırakılırsa TCP bağlantı kurma el sıkışması hemen başlatılır. Etkinleştirilirse bu işlev yalnızca uzak ana makineyi ve bağlantı noktasını kaydeder ve TCP bağlantı kurulumu el sıkışması yalnızca otTcpSendByReference() öğesine yapılan ilk çağrıda gerçekleşir.

TCP Hızlı Açma devre dışıysa çağrıyı yapan, veri göndermeye başlamadan (ör. otTcpSendByReference()) çağrılmadan önce TCP bağlantısı kurma el sıkışmasının yapıldığını belirten otTcpEstablished geri çağırmasını beklemelidir.

Ayrıntılar
Parametreler
[in] aEndpoint
Bağlanılacak TCP uç nokta yapısını gösteren işaretçi.
[in] aSockName
Bağlanılacak ana makinenin IP adresi ve bağlantı noktası.
[in] aFlags
Bu işlemle ilgili seçenekleri belirten işaretler (yukarıdaki numaralandırmaya bakın).
Döndürülen Değerler
OT_ERROR_NONE
İşlem başarıyla tamamlandı.
OT_ERROR_FAILED
İşlem tamamlanamadı.

otTcpEndpointDeinitialize

otError otTcpEndpointDeinitialize(
  otTcpEndpoint *aEndpoint
)

Bu TCP uç noktasını başlatır.

Bu, OpenThread'in artık bu TCP uç noktasını takip etmediği ve bu TCP uç noktası için dahili olarak ayırdığı tüm kaynakları ayırdığı anlamına gelir. Uygulama, TCP uç noktasını uygun gördüğü şekilde destekleyen belleği yeniden kullanabilir.

Canlı TCP bağlantısına karşılık geliyorsa bağlantı, yanlışlıkla sonlandırılır (otTcpAbort() işlevinde olduğu gibi). Uygulamanın bu TCP uç noktası için sağladığı tüm kaynaklar (gönderme arabelleği için bağlı arabellekler, alma arabelleği için bellek, aEndpoint yapısının kendisi vb.) hemen uygulamaya döndürülür.

Ayrıntılar
Parametreler
[in] aEndpoint
İlk kullanıma hazırlamak için TCP uç nokta yapısının işaretçisi.
Döndürülen Değerler
OT_ERROR_NONE
TCP uç noktası başarıyla başlatıldı.
OT_ERROR_FAILED
TCP uç noktası ilk kullanıma hazırlanamadı.

otTcpEndpointGetContext

void * otTcpEndpointGetContext(
  otTcpEndpoint *aEndpoint
)

Başlatma sonrasında aEndpoint ile ilişkilendirilmiş bağlam işaretçisini alır.

Ayrıntılar
Parametreler
[in] aEndpoint
Bağlamı alınacak TCP uç noktası.
İadeler
aEndpoint ile ilişkili bağlam işaretçisi.

otTcpEndpointGetInstance

otInstance * otTcpEndpointGetInstance(
  otTcpEndpoint *aEndpoint
)

Başlatma sonrasında aEndpoint ile ilişkilendirilen Örneği alır.

Ayrıntılar
Parametreler
[in] aEndpoint
Örneği alınacak TCP uç noktası.
İadeler
aEndpoint ile ilişkili Örneği işaretçisi.

otTcpEndpointInitialize

otError otTcpEndpointInitialize(
  otInstance *aInstance,
  otTcpEndpoint *aEndpoint,
  const otTcpEndpointInitializeArgs *aArgs
)

Bir TCP uç noktasını başlatır.

Bu işlevin çağrılması, OpenThread'in TCP uç noktasını takip etmesine ve aEndpoint içinde TCP verilerini depolayıp almasına neden olur. Uygulama, aEndpoint içindeki alanlara doğrudan erişmekten veya bunları değiştirmekten kaçınmalıdır. Uygulamanın aEndpoint belleğini geri alması gerekiyorsa otTcpEndpointDeinitialize() yöntemini çağırmalıdır.

Ayrıntılar
Parametreler
[in] aInstance
OpenThread örneğinin işaretçisi.
[in] aEndpoint
TCP uç nokta yapısına işaretçi.
[in] aArgs
Bir bağımsız değişkenler yapısı için işaretçi.
Döndürülen Değerler
OT_ERROR_NONE
TCP uç noktası başarıyla açıldı.
OT_ERROR_FAILED
TCP uç noktası açılamadı.

otTcpGetLocalAddress

const otSockAddr * otTcpGetLocalAddress(
  const otTcpEndpoint *aEndpoint
)

TCP uç noktasının yerel ana makinesine ve bağlantı noktasına işaretçi sağlar.

Bu soket bağlı durumda değilse ve son bağlantısı kesildikten sonra bağlanmamışsa ana makinenin ve bağlantı noktasının içeriği eski olabilir.

Ayrıntılar
Parametreler
[in] aEndpoint
Yerel ana makinesi ve bağlantı noktası alınacak TCP uç noktası.
İadeler
aEndpoint yerel barındırıcısı ve bağlantı noktası.

otTcpGetPeerAddress

const otSockAddr * otTcpGetPeerAddress(
  const otTcpEndpoint *aEndpoint
)

TCP uç noktasının eşinin ana makinesine ve bağlantı noktasına işaretçi sağlar.

Bu yuva bağlı durumda değilse ana makinenin ve bağlantı noktasının içeriği eski olabilir.

Ayrıntılar
Parametreler
[in] aEndpoint
Eş ana makinesi ve bağlantı noktası alınacak TCP uç noktası.
İadeler
aEndpoint bağlantı eşinin ana makinesi ve bağlantı noktası.

otTcpListen

otError otTcpListen(
  otTcpListener *aListener,
  const otSockAddr *aSockName
)

Belirtilen IP adresi ve bağlantı noktasıyla eşleşen gelen TCP bağlantılarının, bu TCP dinleyicisinin geri çağırmalarını tetiklemesine neden olur.

Ayrıntılar
Parametreler
[in] aListener
Dinlemeye başlaması gereken TCP dinleyici yapısına yönelik işaretçi.
[in] aSockName
Gelen bağlantıların dinleneceği adres ve bağlantı noktası.
Döndürülen Değerler
OT_ERROR_NONE
TCP işleyicide dinleme işlemi başarıyla başlatıldı.
OT_ERROR_FAILED
TCP işleyicide dinleme başlatılamadı.

otTcpListenerDeinitialize

otError otTcpListenerDeinitialize(
  otTcpListener *aListener
)

Bu TCP işleyiciyi başlatır.

Yani OpenThread artık bu TCP dinleyicisini takip etmez ve bu TCP dinleyicisi için dahili olarak ayırdığı tüm kaynakları çıkarır. Uygulama, TCP dinleyicisini uygun gördüğü şekilde destekleyen belleği yeniden kullanabilir.

TCP işleyici o anda dinleme yapıyorsa dinlemeyi durdurur.

Ayrıntılar
Parametreler
[in] aListener
İlk kullanıma hazırlamak için TCP işleyici yapısına işaret eden bir işaretçi.
Döndürülen Değerler
OT_ERROR_NONE
TCP işleyicisi başarıyla başlatıldı.
OT_ERROR_FAILED
TCP işleyicisi başlatılamadı.

otTcpListenerGetContext

void * otTcpListenerGetContext(
  otTcpListener *aListener
)

Başlatma sonrasında aListener ile ilişkilendirilmiş bağlam işaretçisini alır.

Ayrıntılar
Parametreler
[in] aListener
Bağlamı alınacak TCP dinleyici.
İadeler
aListener ile ilişkili bağlam işaretçisi.

otTcpListenerGetInstance

otInstance * otTcpListenerGetInstance(
  otTcpListener *aListener
)

Başlatma sonrasında aListener ile ilişkilendirilen Örneği alır.

Ayrıntılar
Parametreler
[in] aListener
Örneği alınacak TCP dinleyicisi.
İadeler
aListener ile ilişkili Örneği işaretçisi.

otTcpListenerInitialize

otError otTcpListenerInitialize(
  otInstance *aInstance,
  otTcpListener *aListener,
  const otTcpListenerInitializeArgs *aArgs
)

Bir TCP işleyiciyi başlatır.

Bu işlevin çağrılması, OpenThread dinleyicisini izlemesine ve TCP verilerini aListener içinde depolayıp almasına neden olur. Uygulama, aListener içindeki alanlara doğrudan erişmekten veya bunları değiştirmekten kaçınmalıdır. Uygulamanın aListener belleğini geri alması gerekiyorsa otTcpListenerDeinitialize() yöntemini çağırmalıdır.

Ayrıntılar
Parametreler
[in] aInstance
OpenThread örneğinin işaretçisi.
[in] aListener
TCP dinleyici yapısına işaret eden bir işaretçi.
[in] aArgs
Bir bağımsız değişkenler yapısı için işaretçi.
Döndürülen Değerler
OT_ERROR_NONE
TCP işleyici başarıyla açıldı.
OT_ERROR_FAILED
TCP işleyici açılamadı.

otTcpReceiveByReference

otError otTcpReceiveByReference(
  otTcpEndpoint *aEndpoint,
  const otLinkedBuffer **aBuffer
)

Uygulamaya, TCP alma arabelleğinde bulunan verileri referans alan bağlı bir arabellek zinciri sağlar.

Bağlı arabellek zinciri, bir sonraki "alıcı hazır" geri çağırması yapılana veya bir sonraki otTcpReceiveContiguify() ya da otTcpCommitReceive() çağrısına kadar geçerlidir.

Ayrıntılar
Parametreler
[in] aEndpoint
Verilerin alınacağı TCP uç noktasını temsil eden TCP uç nokta yapısına işaret eden işaretçi.
[out] aBuffer
Şu anda alma arabelleğinde bulunan verilere referans veren bağlı arabellek zincirinin işaretçisi.
Döndürülen Değerler
OT_ERROR_NONE
İşlem başarıyla tamamlandı.
OT_ERROR_FAILED
İşlem tamamlanamadı.

otTcpReceiveContiguify

otError otTcpReceiveContiguify(
  otTcpEndpoint *aEndpoint
)

Alma arabelleğini bellekte tamamen bitişik olacak şekilde yeniden düzenler.

Bu isteğe bağlıdır; uygulamaların otTcpReceiveByReference yöntemini çağırarak elde edilen bağlı arabellek zincirini çekmesi yeterlidir. Bazı uygulamalar, veri işlemeyi basitleştirmek için alma arabelleği tutarlı hale getirmek için bu işlevi çağırmak isteyebilir. Ancak bu, alıcı arabelleğindeki verilerin yeniden düzenlenmesi için CPU zamanının masraflarını ortadan kaldırır.

Ayrıntılar
Parametreler
[in] aEndpoint
Yeniden düzenlenecek arabelleği alan TCP uç noktasının işaretçisi.
Döndürülen Değerler
OT_ERROR_NONE
İşlem başarıyla tamamlandı.
OT_ERROR_FAILED
İşlem tamamlanamadı.

otTcpSendByExtension

otError otTcpSendByExtension(
  otTcpEndpoint *aEndpoint,
  size_t aNumBytes,
  uint32_t aFlags
)

Gönderme arabelleğindeki son otLinkedBuffer uzunluğunu belirtilen miktarda uzatarak gönderme arabelleğine veri ekler.

Gönderme arabelleği boşsa işlem başarısız olur.

Ayrıntılar
Parametreler
[in] aEndpoint
Verilerin gönderileceği TCP uç noktasını temsil eden TCP uç nokta yapısını gösteren işaretçi.
[in] aNumBytes
Nihai bağlı arabelleğin uzunluğunun uzatılacağı bayt sayısı.
[in] aFlags
Bu işlemle ilgili seçenekleri belirten işaretler (yukarıdaki numaralandırmaya bakın).
Döndürülen Değerler
OT_ERROR_NONE
Veriler, gönderme arabelleğine başarıyla eklendi.
OT_ERROR_FAILED
Gönderme arabelleğine veri eklenemedi.

otTcpSendByReference

otError otTcpSendByReference(
  otTcpEndpoint *aEndpoint,
  otLinkedBuffer *aBuffer,
  uint32_t aFlags
)

aBuffer tarafından işaret edilen bağlı arabelleğin başvuruda bulunduğu verileri gönderme arabelleğine ekler.

Bu işlev başarılı bir şekilde çağrıldığında, bağlantılı arabellek ve referans verdiği veriler TCP yığınına ait olur; "gönder tamam" geri çağırması bu nesnelerin sahipliğini uygulamaya döndürene kadar uygulama tarafından değiştirilmemelidir. Bu işlevin daha önceki bir çağrısı için "gönder tamam" geri çağırması henüz etkinleşmemiş olsa bile, gönderme sırasına başka bir bağlı arabellek eklemek için bu işlev çağrılabilir.

aBuffer öğesinin zincir olmamalıdır; mNext alanı NULL olmalıdır. Bu çağrıdan hemen sonra başka veriler eklenecekse TCP uygulamasına ipucu olarak OT_TCP_SEND_MORE_TO_COME işareti kullanılmalıdır.

Ayrıntılar
Parametreler
[in] aEndpoint
Verilerin gönderileceği TCP uç noktasını temsil eden TCP uç nokta yapısını gösteren işaretçi.
[in] aBuffer
Gönderme arabelleğine eklenecek verileri referans alan bağlı arabellek zincirinin işaretçisi.
[in] aFlags
Bu işlemle ilgili seçenekleri belirten işaretler (yukarıdaki numaralandırmaya bakın).
Döndürülen Değerler
OT_ERROR_NONE
Veriler, gönderme arabelleğine başarıyla eklendi.
OT_ERROR_FAILED
Gönderme arabelleğine veri eklenemedi.

otTcpSendEndOfStream

otError otTcpSendEndOfStream(
  otTcpEndpoint *aEndpoint
)

Bağlantı eşine, bu TCP uç noktasının daha fazla veri göndermeyeceğini bildirir.

Bu, uygulamanın bağlantı eşine gönderilecek başka veri olmadığında kullanılmalıdır. Bu bağlantıda, bağlantı eşinde gelecekte yapılacak okumalar "akışın sonu" koşuluna neden olur ve bu bağlantı uç noktasında gelecekte yapılacak yazma işlemleri başarısız olur.

"Akış sonu" koşulu yalnızca daha önce göndermek üzere TCP yığınına sağlanan tüm veriler, bağlantı eşi tarafından alındıktan sonra geçerli olur.

Ayrıntılar
Parametreler
[in] aEndpoint
Kapatılacak TCP uç noktasını temsil eden, TCP uç nokta yapısının işaretçisi.
Döndürülen Değerler
OT_ERROR_NONE
"Akış sonu" koşulu iletim için başarıyla sıraya alındı.
OT_ERROR_FAILED
"Akış sonu" koşulu iletim için sıraya alınamadı.

otTcpStopListening

otError otTcpStopListening(
  otTcpListener *aListener
)

Bu TCP işleyicinin gelen bağlantıları dinlemeyi durdurmasına neden olur.

Ayrıntılar
Parametreler
[in] aListener
Dinlemeyi durdurması gereken, TCP dinleyici yapısına işaret eden bir işaretçi.
Döndürülen Değerler
OT_ERROR_NONE
TCP dinleyicisinde dinleme başarıyla durduruldu.
OT_ERROR_FAILED
TCP işleyicide dinleme durdurulamadı.

Makrolar

OT_TCP_ENDPOINT_TCB_NUM_PTR

 OT_TCP_ENDPOINT_TCB_NUM_PTR 36

OT_TCP_ENDPOINT_TCB_SIZE_BASE

 OT_TCP_ENDPOINT_TCB_SIZE_BASE 392

OT_TCP_ENDPOINT_TCB_SIZE_BASE ve OT_TCP_ENDPOINT_TCB_NUM_POINTERS, otTcpEndpoint alanındaki mTcb alanı, TCPlp'teki struct tcpcb ile aynı boyuta sahip olacak şekilde seçilir.

mTcb alanı tanımı opak olmasına rağmen TCP uygulamasında struct tcpcb olarak değerlendirildiği için bu gereklidir.

OT_TCP_LISTENER_TCB_NUM_PTR

 OT_TCP_LISTENER_TCB_NUM_PTR 3

OT_TCP_LISTENER_TCB_SIZE_BASE

 OT_TCP_LISTENER_TCB_SIZE_BASE 16

otTcpListener öğesindeki mTcbListener alanının, TCPlp'teki struct tcpcb_listen ile aynı boyuta sahip olacağı şekilde OT_TCP_LISTENER_TCB_SIZE_BASE ve OT_TCP_LISTENER_TCB_NUM_POINTERS seçilir.

mTcbListen alanı beyanında opak olmasına rağmen TCP uygulamasında struct tcpcb olarak değerlendirildiği için bu gereklidir.

OT_TCP_RECEIVE_BUFFER_SIZE_FEW_HOPS

 OT_TCP_RECEIVE_BUFFER_SIZE_FEW_HOPS 2598

Yaklaşık 3 veya daha az kablosuz atlamadan geçen TCP bağlantıları için önerilen arabellek boyutu.

Belleğin özellikle kısıtlı olduğu platformlarda ve yüksek bant genişliğinin gerekli olmadığı durumlarda daha küçük bir arabellek boyutunun manuel olarak seçilmesi istenebilir.

OT_TCP_RECEIVE_BUFFER_SIZE_MANY_HOPS

 OT_TCP_RECEIVE_BUFFER_SIZE_MANY_HOPS 4157

Çok sayıda kablosuz atlamadan geçen TCP bağlantıları için önerilen arabellek boyutu.

TCP bağlantısı çok sayıda (6'dan fazla) atlamadan geçerse manuel olarak büyük bir arabellek boyutu seçmeniz gerekebilir.

Kaynaklar

OpenThread API Referans konuları, GitHub'da bulunan kaynak koddan gelir. Daha fazla bilgi edinmek veya dokümanlarımıza katkıda bulunmak için Kaynaklar bölümüne bakın.