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
|
enumotTcpSendByReference öğesine iletilen işaretleri tanımlar. |
otTcpDisconnectedReason
|
enum |
otTcpIncomingConnectionAction{
|
enum Gelen bağlantı işlemlerini tanımlar. |
Türdefler |
|
---|---|
otLinkedBuffer
|
typedefstruct otLinkedBuffer
TCP ile kullanılacak bağlı bir arabellek yapısı. |
otTcpAcceptDone)(otTcpListener *aListener, otTcpEndpoint *aEndpoint, const otSockAddr *aPeer)
|
typedefvoid(*
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)
|
typedefvoid(*
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
|
typedefenum otTcpDisconnectedReason
|
otTcpEndpoint
|
typedefstruct otTcpEndpoint
|
otTcpEndpointInitializeArgs
|
typedefstruct otTcpEndpointInitializeArgs
otTcpEndpointInitialize() işlevinin bağımsız değişkenlerini içerir. |
otTcpEstablished)(otTcpEndpoint *aEndpoint)
|
typedefvoid(*
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)
|
typedefvoid(*
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
|
typedefstruct otTcpListener
|
otTcpListenerInitializeArgs
|
typedefstruct otTcpListenerInitializeArgs
otTcpListenerInitialize() işlevinin bağımsız değişkenlerini içerir. |
otTcpReceiveAvailable)(otTcpEndpoint *aEndpoint, size_t aBytesAvailable, bool aEndOfStream, size_t aBytesRemaining)
|
typedefvoid(*
Bu geri çağırma, alma arabelleğinden tüketilebilecek bayt sayısını gösterir. |
otTcpSendDone)(otTcpEndpoint *aEndpoint, otLinkedBuffer *aData)
|
typedefvoid(*
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
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 |
|
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 |
|
||||||
İ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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
İş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 |
|
||||
Döndürülen Değerler |
|
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 |
|
||||
Döndürülen Değerler |
|
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 |
|
||||||
Döndürülen Değerler |
|
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 |
|
||||||
Döndürülen Değerler |
|
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 |
|
||||
Döndürülen Değerler |
|
otTcpEndpointGetContext
void * otTcpEndpointGetContext( otTcpEndpoint *aEndpoint )
Başlatma sonrasında aEndpoint
ile ilişkilendirilmiş bağlam işaretçisini alır.
Ayrıntılar | |||
---|---|---|---|
Parametreler |
|
||
İ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 |
|
||
İ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 |
|
||||||
Döndürülen Değerler |
|
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 |
|
||
İ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 |
|
||
İ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 |
|
||||
Döndürülen Değerler |
|
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 |
|
||||
Döndürülen Değerler |
|
otTcpListenerGetContext
void * otTcpListenerGetContext( otTcpListener *aListener )
Başlatma sonrasında aListener
ile ilişkilendirilmiş bağlam işaretçisini alır.
Ayrıntılar | |||
---|---|---|---|
Parametreler |
|
||
İ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 |
|
||
İ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 |
|
||||||
Döndürülen Değerler |
|
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 |
|
||||
Döndürülen Değerler |
|
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 |
|
||||
Döndürülen Değerler |
|
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 |
|
||||||
Döndürülen Değerler |
|
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 |
|
||||||
Döndürülen Değerler |
|
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 |
|
||||
Döndürülen Değerler |
|
otTcpStopListening
otError otTcpStopListening( otTcpListener *aListener )
Bu TCP işleyicinin gelen bağlantıları dinlemeyi durdurmasına neden olur.
Ayrıntılar | |||||
---|---|---|---|---|---|
Parametreler |
|
||||
Döndürülen Değerler |
|
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.