TCP
Modul ini mencakup fungsi-fungsi yang mengontrol komunikasi TCP.
Ringkasan
Enumerasi |
|
---|---|
anonymous enum
|
enum Menentukan tanda yang diteruskan ke otTcpConnect(). |
anonymous enum
|
enum Menentukan flag yang diteruskan ke otTcpSendByReference . |
otTcpDisconnectedReason
|
enum |
otTcpIncomingConnectionAction{
|
enum Menentukan tindakan koneksi masuk. |
Typedef |
|
---|---|
otLinkedBuffer
|
typedefstruct otLinkedBuffer
Struktur buffer yang ditautkan untuk digunakan dengan TCP. |
otTcpAcceptDone)(otTcpListener *aListener, otTcpEndpoint *aEndpoint, const otSockAddr *aPeer)
|
typedefvoid(*
Callback ini menunjukkan bahwa koneksi TCP kini siap untuk komunikasi dua arah. |
otTcpAcceptReady)(otTcpListener *aListener, const otSockAddr *aPeer, otTcpEndpoint **aAcceptInto)
|
typedef Callback ini menunjukkan bahwa koneksi masuk yang cocok dengan pemroses TCP ini telah tiba. |
otTcpDisconnected)(otTcpEndpoint *aEndpoint, otTcpDisconnectedReason aReason)
|
typedefvoid(*
Callback ini menunjukkan bahwa koneksi terputus dan tidak akan digunakan lagi, atau bahwa koneksi telah memasuki status TIME-WAIT. |
otTcpDisconnectedReason
|
typedefenum otTcpDisconnectedReason
|
otTcpEndpoint
|
typedefstruct otTcpEndpoint
|
otTcpEndpointInitializeArgs
|
typedefstruct otTcpEndpointInitializeArgs
Berisi argumen ke fungsi otTcpEndpointInitialize(). |
otTcpEstablished)(otTcpEndpoint *aEndpoint)
|
typedefvoid(*
Callback ini akan memberi tahu aplikasi bahwa handshake 3 arah TCP telah selesai dan koneksi kini telah dibuat. |
otTcpForwardProgress)(otTcpEndpoint *aEndpoint, size_t aInSendBuffer, size_t aBacklog)
|
typedefvoid(*
Callback ini memberi tahu aplikasi jika progres penerusan telah dibuat dalam mentransfer data dari buffering pengiriman ke penerima. |
otTcpIncomingConnectionAction
|
typedef Menentukan tindakan koneksi masuk. |
otTcpListener
|
typedefstruct otTcpListener
|
otTcpListenerInitializeArgs
|
typedefstruct otTcpListenerInitializeArgs
Berisi argumen ke fungsi otTcpListenerInitialize(). |
otTcpReceiveAvailable)(otTcpEndpoint *aEndpoint, size_t aBytesAvailable, bool aEndOfStream, size_t aBytesRemaining)
|
typedefvoid(*
Callback ini menunjukkan jumlah byte yang tersedia untuk digunakan dari buffer penerimaan. |
otTcpSendDone)(otTcpEndpoint *aEndpoint, otLinkedBuffer *aData)
|
typedefvoid(*
Callback ini memberi tahu aplikasi bahwa data dalam aData yang disediakan telah dikonfirmasi oleh peer koneksi dan bahwa aData serta data yang ada di dalamnya dapat diklaim kembali oleh aplikasi. |
Fungsi |
|
---|---|
otTcpAbort(otTcpEndpoint *aEndpoint)
|
Secara paksa mengakhiri koneksi TCP yang terkait dengan endpoint TCP ini.
|
otTcpBind(otTcpEndpoint *aEndpoint, const otSockAddr *aSockName)
|
Mengikat endpoint TCP ke alamat IP dan port.
|
otTcpCommitReceive(otTcpEndpoint *aEndpoint, size_t aNumBytes, uint32_t aFlags)
|
Memberi tahu stack TCP bahwa aplikasi telah selesai memproses
aNumBytes byte data pada awal buffer penerimaan dan bahwa stack TCP tidak perlu terus mempertahankan byte tersebut dalam buffer penerimaan. |
otTcpConnect(otTcpEndpoint *aEndpoint, const otSockAddr *aSockName, uint32_t aFlags)
|
Merekam host dan port jarak jauh untuk koneksi ini.
|
otTcpEndpointDeinitialize(otTcpEndpoint *aEndpoint)
|
Membatalkan inisialisasi endpoint TCP ini.
|
otTcpEndpointGetContext(otTcpEndpoint *aEndpoint)
|
void *
Mendapatkan pointer konteks yang terkait dengan
aEndpoint saat inisialisasi. |
otTcpEndpointGetInstance(otTcpEndpoint *aEndpoint)
|
Mendapatkan otInstance yang terkait dengan
aEndpoint saat inisialisasi. |
otTcpEndpointInitialize(otInstance *aInstance, otTcpEndpoint *aEndpoint, const otTcpEndpointInitializeArgs *aArgs)
|
Menginisialisasi endpoint TCP.
|
otTcpGetLocalAddress(const otTcpEndpoint *aEndpoint)
|
const otSockAddr *
Mendapatkan pointer ke host dan port lokal endpoint TCP.
|
otTcpGetPeerAddress(const otTcpEndpoint *aEndpoint)
|
const otSockAddr *
Mendapatkan pointer ke host dan port peer endpoint TCP.
|
otTcpListen(otTcpListener *aListener, const otSockAddr *aSockName)
|
Menyebabkan koneksi TCP masuk yang cocok dengan port dan alamat IP yang ditetapkan memicu callback pemroses TCP ini.
|
otTcpListenerDeinitialize(otTcpListener *aListener)
|
Membatalkan inisialisasi pemroses TCP ini.
|
otTcpListenerGetContext(otTcpListener *aListener)
|
void *
Mendapatkan pointer konteks yang terkait dengan
aListener saat inisialisasi. |
otTcpListenerGetInstance(otTcpListener *aListener)
|
Mendapatkan otInstance yang terkait dengan
aListener saat inisialisasi. |
otTcpListenerInitialize(otInstance *aInstance, otTcpListener *aListener, const otTcpListenerInitializeArgs *aArgs)
|
Menginisialisasi pemroses TCP.
|
otTcpReceiveByReference(otTcpEndpoint *aEndpoint, const otLinkedBuffer **aBuffer)
|
Menyediakan aplikasi dengan rantai buffer tertaut yang merujuk data yang saat ini berada dalam buffer penerimaan TCP.
|
otTcpReceiveContiguify(otTcpEndpoint *aEndpoint)
|
Mengatur ulang buffer penerimaan agar sepenuhnya berdekatan dalam memori.
|
otTcpSendByExtension(otTcpEndpoint *aEndpoint, size_t aNumBytes, uint32_t aFlags)
|
Menambahkan data ke buffer pengiriman dengan memperpanjang panjang otLinkedBuffer akhir dalam buffer pengiriman sebesar jumlah yang ditentukan.
|
otTcpSendByReference(otTcpEndpoint *aEndpoint, otLinkedBuffer *aBuffer, uint32_t aFlags)
|
Menambahkan data yang direferensikan oleh buffer tertaut yang ditunjuk oleh
aBuffer ke buffer pengiriman. |
otTcpSendEndOfStream(otTcpEndpoint *aEndpoint)
|
Memberi tahu peer koneksi bahwa endpoint TCP ini tidak akan mengirim data lebih banyak.
|
otTcpStopListening(otTcpListener *aListener)
|
Menyebabkan pemroses TCP ini berhenti memproses koneksi yang masuk.
|
Struct |
|
---|---|
otLinkedBuffer |
Struktur buffer yang ditautkan untuk digunakan dengan TCP. |
otTcpEndpoint |
Mewakili endpoint TCP. |
otTcpEndpointInitializeArgs |
Berisi argumen ke fungsi otTcpEndpointInitialize(). |
otTcpListener |
Merepresentasikan pemroses TCP. |
otTcpListenerInitializeArgs |
Berisi argumen ke fungsi otTcpListenerInitialize(). |
Enumerasi
enum anonim
anonymous enum
Menentukan flag yang diteruskan ke otTcpSendByReference
.
otTcpDisconnectedReason
otTcpDisconnectedReason
otTcpIncomingConnectionAction
otTcpIncomingConnectionAction
Menentukan tindakan koneksi masuk.
Ini digunakan dalam callback otTcpAcceptReady().
Properti | |
---|---|
OT_TCP_INCOMING_CONNECTION_ACTION_ACCEPT
|
Menerima koneksi masuk. |
OT_TCP_INCOMING_CONNECTION_ACTION_DEFER
|
Tunda (mengabaikan) koneksi yang masuk. |
OT_TCP_INCOMING_CONNECTION_ACTION_REFUSE
|
Menolak koneksi masuk. |
Typedef
otLinkedBuffer
struct otLinkedBuffer otLinkedBuffer
Struktur buffer yang ditautkan untuk digunakan dengan TCP.
Struktur otLinkedBuffer tunggal mereferensikan array byte dalam memori, melalui mData dan mLength. Kolom mNext digunakan untuk membentuk rantai struktur otLinkedBuffer.
otTcpAcceptDone
void(* otTcpAcceptDone)(otTcpListener *aListener, otTcpEndpoint *aEndpoint, const otSockAddr *aPeer)
Callback ini menunjukkan bahwa koneksi TCP kini siap untuk komunikasi dua arah.
Dalam kasus TCP Fast Open, ini mungkin sebelum handshake koneksi TCP benar-benar selesai. Aplikasi ini dilengkapi dengan pointer konteks untuk pemroses TCP yang menerima koneksi dan endpoint TCP tempatnya diterima. Konteks yang diberikan adalah konteks yang terkait dengan pemroses TCP.
Detail | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
otTcpAcceptReady
otTcpIncomingConnectionAction(* otTcpAcceptReady)(otTcpListener *aListener, const otSockAddr *aPeer, otTcpEndpoint **aAcceptInto)
Callback ini menunjukkan bahwa koneksi masuk yang cocok dengan pemroses TCP ini telah tiba.
Respons umumnya adalah aplikasi menerima koneksi yang masuk. Hal ini dilakukan dengan mengisi aAcceptInto
dengan pointer ke otTcpEndpoint yang akan menerima koneksi masuk. otTcpEndpoint ini harus sudah diinisialisasi menggunakan otTcpEndpointInitialize(). Kemudian, aplikasi akan menampilkan OT_TCP_INCOMING_CONNECTION_ACTION_Accept.
Atau, aplikasi dapat menolak untuk menerima koneksi masuk. Ada dua cara yang dapat digunakan aplikasi untuk melakukannya. Pertama, jika aplikasi menampilkan OT_TCP_INCOMING_CONNECTION_ACTION_DEFER, OpenThread akan mengabaikan permintaan pembentukan koneksi secara diam-diam; peer koneksi kemungkinan akan mengirim ulang permintaan, dan pada saat itu callback akan dipanggil lagi. Hal ini berguna jika resource saat ini tidak tersedia untuk menerima koneksi, tetapi mungkin tersedia saat peer koneksi mentransmisikan ulang upaya pembentukan koneksinya. Kedua, jika aplikasi menampilkan OT_TCP_INCOMING_CONNECTION_ACTION_REFUSE, OpenThread akan mengirimkan pesan "connection ditolak" ke host yang mencoba membuat koneksi. Jika aplikasi menolak koneksi masuk, aplikasi tidak perlu mengisi aAcceptInto
.
Detail | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
||||||
Hasil |
Deskripsi cara menangani koneksi yang masuk.
|
otTcpDisconnected
void(* otTcpDisconnected)(otTcpEndpoint *aEndpoint, otTcpDisconnectedReason aReason)
Callback ini menunjukkan bahwa koneksi terputus dan tidak akan digunakan lagi, atau bahwa koneksi telah memasuki status TIME-WAIT.
Error ini dapat terjadi jika upaya pembuatan koneksi (dimulai dengan memanggil otTcpConnect()) gagal, atau titik setelahnya (mis., jika waktu koneksi habis atau segmen RST diterima dari peer koneksi). Setelah callback ini diaktifkan, semua resource yang disediakan aplikasi untuk koneksi ini (yaitu otLinkedBuffers
dan memori apa pun yang dirujuk, tetapi bukan endpoint TCP itu sendiri atau ruang untuk buffer penerimaan) dapat diperoleh kembali. Dalam kasus koneksi yang memasuki status TIME-WAIT, callback ini dipanggil dua kali, sekali saat masuk ke status TIME-WAIT (dengan OT_TCP_DISCONNECTED_REASON_TIME_WAIT, dan sekali lagi ketika status TIME-WAIT berakhir (dengan OT_TCP_DISCONNECTED_REASON_NORMAL).
Detail | |||||
---|---|---|---|---|---|
Parameter |
|
otTcpDisconnectedReason
enum otTcpDisconnectedReason otTcpDisconnectedReason
otTcpEndpoint
struct otTcpEndpoint otTcpEndpoint
otTcpEndpointInitializeArgs
struct otTcpEndpointInitializeArgs otTcpEndpointInitializeArgs
Berisi argumen ke fungsi otTcpEndpointInitialize().
otTcpEstablished
void(* otTcpEstablished)(otTcpEndpoint *aEndpoint)
Callback ini akan memberi tahu aplikasi bahwa handshake 3 arah TCP telah selesai dan koneksi kini telah dibuat.
Detail | |||
---|---|---|---|
Parameter |
|
otTcpForwardProgress
void(* otTcpForwardProgress)(otTcpEndpoint *aEndpoint, size_t aInSendBuffer, size_t aBacklog)
Callback ini memberi tahu aplikasi jika progres penerusan telah dibuat dalam mentransfer data dari buffering pengiriman ke penerima.
Callback ini tidak diperlukan untuk operasi TCP yang benar. Sebagian besar aplikasi hanya dapat mengandalkan callback otTcpSendDone() untuk mengklaim kembali buffer yang tertaut setelah stack TCP selesai menggunakannya. Tujuan callback ini adalah untuk mendukung aplikasi tingkat lanjut yang mendapatkan manfaat dari informasi terperinci tentang bagaimana koneksi membuat progres maju dalam transfer data ke peer koneksi.
Operasi callback ini terkait erat dengan buffer pengiriman TCP. Buffering pengiriman dapat diartikan sebagai memiliki dua region. Pertama, terdapat region "in-flight" (sedang berjalan) di head (depan) buffer pengiriman. Ini sesuai dengan data yang telah dikirim ke penerima, tetapi belum dikonfirmasi. Kedua, ada region "backlog", yang terdiri dari semua data di buffer pengiriman yang tidak berada di region "in-flight". Region "backlog" berkaitan dengan data yang diantrekan untuk dikirim, tetapi belum dikirim.
Callback dipanggil sebagai respons terhadap dua jenis peristiwa. Pertama, region "yang sedang berlangsung" dari buffer pengiriman mungkin menyusut (misalnya, saat penerima mengakui data yang kita kirim sebelumnya). Kedua, region "backlog" buffer pengiriman mungkin menyusut (misalnya, data baru telah dikirim). Kedua kondisi ini sering terjadi bersamaan, sebagai respons terhadap segmen ACK dari peer koneksi. Itulah sebabnya keduanya digabungkan dalam satu callback.
Stack TCP hanya menggunakan byte aInSendBuffer
di bagian akhir buffering pengiriman; jika aInSendBuffer
berkurang sebesar jumlah x, artinya x byte tambahan yang sebelumnya berada di kepala buffer pengiriman tidak lagi menjadi bagian dari buffer pengiriman dan kini dapat diklaim kembali (yaitu, ditimpa) oleh aplikasi. Perhatikan bahwa struktur otLinkedBuffer itu sendiri hanya dapat diklaim kembali setelah semua byte yang dirujuknya tidak lagi menjadi bagian dari buffer pengiriman.
Callback ini subsumsi otTcpSendDone(), dalam arti berikut: aplikasi dapat menentukan kapan buffer tertaut dapat diklaim kembali dengan membandingkan aInSendBuffer
dengan jumlah byte di setiap buffer tertaut. Namun, kami harap otTcpSendDone(), yang secara langsung menyampaikan otLinkedBuffers mana yang dapat diklaim kembali, menjadi jauh lebih mudah digunakan. Jika kedua callback didaftarkan dan dipicu oleh peristiwa yang sama (mis., segmen ACK yang sama diterima), callback otTcpSendDone() akan dipicu terlebih dahulu, diikuti oleh callback ini.
Selain itu, callback ini menyediakan aBacklog
, yang menunjukkan jumlah byte data dalam buffering pengiriman yang belum beroperasi. Untuk aplikasi yang hanya ingin menambahkan data ke buffering pengiriman jika ada kepastian bahwa data akan segera dikirim, data hanya dikirim saat aBacklog
sesuai kecil (0 atau mendekati 0). Misalnya, aplikasi dapat menggunakan aBacklog
sehingga dapat bereaksi terhadap penumpukan antrean dengan melepas atau menggabungkan data untuk menghindari pembuatan backlog data.
Setelah panggilan ke otTcpSendByReference() atau otTcpSendByExtension() dengan jumlah byte positif, callback otTcpForwardProgress() dijamin akan dipanggil untuk menunjukkan kapan byte yang ditambahkan ke buffer pengiriman dikirim. Panggilan ke otTcpForwardProgress() dapat langsung dilakukan setelah byte ditambahkan ke buffer pengiriman (jika beberapa byte tersebut segera dikirim, sehingga mengurangi backlog), atau nantinya (setelah koneksi mengirimkan sebagian atau semua data, sehingga mengurangi backlog). Yang dimaksud dengan "segera" adalah callback segera dijadwalkan untuk dieksekusi di tasklet; untuk menghindari kompleksitas terkait reentrancy, callback otTcpForwardProgress() tidak pernah dipanggil secara langsung dari fungsi otTcpSendByReference() atau otTcpSendByExtension().
Detail | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
otTcpIncomingConnectionAction
enum otTcpIncomingConnectionAction otTcpIncomingConnectionAction
Menentukan tindakan koneksi masuk.
Ini digunakan dalam callback otTcpAcceptReady().
otTcpListener
struct otTcpListener otTcpListener
otTcpListenerInitializeArgs
struct otTcpListenerInitializeArgs otTcpListenerInitializeArgs
Berisi argumen ke fungsi otTcpListenerInitialize().
otTcpReceiveAvailable
void(* otTcpReceiveAvailable)(otTcpEndpoint *aEndpoint, size_t aBytesAvailable, bool aEndOfStream, size_t aBytesRemaining)
Callback ini menunjukkan jumlah byte yang tersedia untuk digunakan dari buffer penerimaan.
Callback ini dipanggil setiap kali byte ditambahkan ke buffer penerimaan dan saat akhir streaming tercapai. Jika akhir streaming telah tercapai (yaitu, jika tidak ada lagi data yang tersedia untuk dibaca karena peer koneksi telah menutup ujung koneksinya untuk menulis), aEndOfStream
bernilai benar (true). Terakhir, aBytesRemaining
menunjukkan berapa banyak kapasitas yang tersisa di buffering penerimaan untuk menyimpan data tambahan yang masuk.
Detail | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parameter |
|
otTcpSendDone
void(* otTcpSendDone)(otTcpEndpoint *aEndpoint, otLinkedBuffer *aData)
Callback ini memberi tahu aplikasi bahwa data dalam aData
yang disediakan telah dikonfirmasi oleh peer koneksi dan bahwa aData
serta data yang ada di dalamnya dapat diklaim kembali oleh aplikasi.
aData
dijamin identik dengan yang diteruskan ke TCP melalui otTcpSendByReference(), termasuk ekstensi apa pun yang diterapkan melalui otTcpSendByExtension().
Detail | |||||
---|---|---|---|---|---|
Parameter |
|
Fungsi
otTcpAbort
otError otTcpAbort( otTcpEndpoint *aEndpoint )
Secara paksa mengakhiri koneksi TCP yang terkait dengan endpoint TCP ini.
Tindakan ini akan segera membuat endpoint TCP bebas digunakan untuk koneksi lain dan mengosongkan buffer pengiriman dan terima, mentransfer kepemilikan data apa pun yang disediakan oleh aplikasi dalam panggilan otTcpSendByReference() dan otTcpSendByExtension() kembali ke aplikasi. Callback dan memori titik akhir TCP untuk buffer penerimaan tetap dikaitkan dengan titik akhir TCP.
Detail | |||||
---|---|---|---|---|---|
Parameter |
|
||||
Nilai Pengembalian |
|
otTcpBind
otError otTcpBind( otTcpEndpoint *aEndpoint, const otSockAddr *aSockName )
Mengikat endpoint TCP ke alamat IP dan port.
Detail | |||||
---|---|---|---|---|---|
Parameter |
|
||||
Nilai Pengembalian |
|
otTcpCommitReceive
otError otTcpCommitReceive( otTcpEndpoint *aEndpoint, size_t aNumBytes, uint32_t aFlags )
Memberi tahu stack TCP bahwa aplikasi telah selesai memproses aNumBytes
byte data pada awal buffer penerimaan dan bahwa stack TCP tidak perlu terus mempertahankan byte tersebut dalam buffer penerimaan.
Detail | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
||||||
Nilai Pengembalian |
|
otTcpConnect
otError otTcpConnect( otTcpEndpoint *aEndpoint, const otSockAddr *aSockName, uint32_t aFlags )
Merekam host dan port jarak jauh untuk koneksi ini.
TCP Fast Open harus diaktifkan atau dinonaktifkan menggunakan aFlags
. Jika dinonaktifkan, handshake pembentukan koneksi TCP akan segera dimulai. Jika diaktifkan, fungsi ini hanya akan merekam host dan port jarak jauh, dan handshake tempat koneksi TCP hanya terjadi pada panggilan pertama ke otTcpSendByReference()
.
Jika TCP Fast Open dinonaktifkan, pemanggil harus menunggu callback otTcpEstablished
yang menunjukkan bahwa handshake tempat koneksi TCP selesai sebelum dapat mulai mengirim data, misalnya, dengan memanggil otTcpSendByReference()
.
Detail | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
||||||
Nilai Pengembalian |
|
otTcpEndpointDeinitialize
otError otTcpEndpointDeinitialize( otTcpEndpoint *aEndpoint )
Membatalkan inisialisasi endpoint TCP ini.
Artinya OpenThread tidak lagi melacak endpoint TCP ini dan membatalkan alokasi semua resource yang telah dialokasikan secara internal untuk endpoint TCP ini. Aplikasi bisa menggunakan kembali memori yang mendukung endpoint TCP jika dirasa sesuai.
Jika sesuai dengan koneksi TCP langsung, koneksi akan dihentikan secara tiba-tiba (seperti dalam otTcpAbort()). Semua resource yang telah disediakan aplikasi untuk endpoint TCP ini (buffer tertaut untuk buffer pengiriman, memori untuk buffer penerimaan, struktur aEndpoint
itu sendiri, dll.) akan segera ditampilkan ke aplikasi.
Detail | |||||
---|---|---|---|---|---|
Parameter |
|
||||
Nilai Pengembalian |
|
otTcpEndpointGetContext
void * otTcpEndpointGetContext( otTcpEndpoint *aEndpoint )
Mendapatkan pointer konteks yang terkait dengan aEndpoint
saat inisialisasi.
Detail | |||
---|---|---|---|
Parameter |
|
||
Hasil |
Pointer konteks yang terkait dengan
aEndpoint . |
otTcpEndpointGetInstance
otInstance * otTcpEndpointGetInstance( otTcpEndpoint *aEndpoint )
Mendapatkan otInstance yang terkait dengan aEndpoint
saat inisialisasi.
Detail | |||
---|---|---|---|
Parameter |
|
||
Hasil |
Pointer otInstance yang terkait dengan
aEndpoint . |
otTcpEndpointInitialize
otError otTcpEndpointInitialize( otInstance *aInstance, otTcpEndpoint *aEndpoint, const otTcpEndpointInitializeArgs *aArgs )
Menginisialisasi endpoint TCP.
Memanggil fungsi ini akan menyebabkan OpenThread melacak endpoint TCP serta menyimpan dan mengambil data TCP di dalam aEndpoint
. Aplikasi tidak boleh mengakses atau mengubah kolom di aEndpoint
secara langsung. Jika perlu mengklaim kembali aEndpoint
pendukung memori, aplikasi harus memanggil otTcpEndpointDeinitialize().
Detail | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
||||||
Nilai Pengembalian |
|
otTcpGetLocalAddress
const otSockAddr * otTcpGetLocalAddress( const otTcpEndpoint *aEndpoint )
Mendapatkan pointer ke host dan port lokal endpoint TCP.
Konten host dan port mungkin sudah tidak berlaku jika soket ini tidak dalam kondisi terhubung dan tidak diikat setelah terakhir kali diputus.
Detail | |||
---|---|---|---|
Parameter |
|
||
Hasil |
Host dan port lokal
aEndpoint . |
otTcpGetPeerAddress
const otSockAddr * otTcpGetPeerAddress( const otTcpEndpoint *aEndpoint )
Mendapatkan pointer ke host dan port peer endpoint TCP.
Konten host dan port mungkin sudah tidak berlaku jika soket ini tidak dalam kondisi terhubung.
Detail | |||
---|---|---|---|
Parameter |
|
||
Hasil |
Host dan port peer koneksi
aEndpoint . |
otTcpListen
otError otTcpListen( otTcpListener *aListener, const otSockAddr *aSockName )
Menyebabkan koneksi TCP masuk yang cocok dengan port dan alamat IP yang ditetapkan memicu callback pemroses TCP ini.
Detail | |||||
---|---|---|---|---|---|
Parameter |
|
||||
Nilai Pengembalian |
|
otTcpListenerDeinitialize
otError otTcpListenerDeinitialize( otTcpListener *aListener )
Membatalkan inisialisasi pemroses TCP ini.
Artinya OpenThread tidak lagi melacak pemroses TCP ini dan membatalkan alokasi semua resource yang telah dialokasikan secara internal untuk pemroses TCP ini. Aplikasi bisa menggunakan kembali memori pendukung TCP setelah dirasa sesuai.
Jika pemroses TCP sedang mendengarkan, maka ia akan berhenti mendengarkan.
Detail | |||||
---|---|---|---|---|---|
Parameter |
|
||||
Nilai Pengembalian |
|
otTcpListenerGetContext
void * otTcpListenerGetContext( otTcpListener *aListener )
Mendapatkan pointer konteks yang terkait dengan aListener
saat inisialisasi.
Detail | |||
---|---|---|---|
Parameter |
|
||
Hasil |
Pointer konteks yang terkait dengan
aListener . |
otTcpListenerGetInstance
otInstance * otTcpListenerGetInstance( otTcpListener *aListener )
Mendapatkan otInstance yang terkait dengan aListener
saat inisialisasi.
Detail | |||
---|---|---|---|
Parameter |
|
||
Hasil |
Pointer otInstance yang terkait dengan
aListener . |
otTcpListenerInitialize
otError otTcpListenerInitialize( otInstance *aInstance, otTcpListener *aListener, const otTcpListenerInitializeArgs *aArgs )
Menginisialisasi pemroses TCP.
Memanggil fungsi ini akan menyebabkan OpenThread melacak pemroses TCP serta menyimpan dan mengambil data TCP di dalam aListener
. Aplikasi tidak boleh mengakses atau mengubah kolom di aListener
secara langsung. Jika aplikasi perlu mengklaim kembali aListener
pendukung memori, aplikasi harus memanggil otTcpListenerDeinitialize().
Detail | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
||||||
Nilai Pengembalian |
|
otTcpReceiveByReference
otError otTcpReceiveByReference( otTcpEndpoint *aEndpoint, const otLinkedBuffer **aBuffer )
Menyediakan aplikasi dengan rantai buffer tertaut yang merujuk data yang saat ini berada dalam buffer penerimaan TCP.
Rantai buffer yang tertaut berlaku hingga callback "accept ready" selanjutnya dipanggil, atau hingga panggilan berikutnya ke otTcpReceiveContiguify() atau otTcpCommitReceive().
Detail | |||||
---|---|---|---|---|---|
Parameter |
|
||||
Nilai Pengembalian |
|
otTcpReceiveContiguify
otError otTcpReceiveContiguify( otTcpEndpoint *aEndpoint )
Mengatur ulang buffer penerimaan agar sepenuhnya berdekatan dalam memori.
Hal ini bersifat opsional; aplikasi dapat dengan mudah melewati rantai buffering tertaut yang diperoleh dengan memanggil otTcpReceiveByReference
. Beberapa aplikasi mungkin ingin memanggil fungsi ini untuk membuat buffer penerimaan berdekatan guna menyederhanakan pemrosesan data, tetapi hal ini akan mengorbankan waktu CPU untuk mengatur ulang data dalam buffer penerimaan.
Detail | |||||
---|---|---|---|---|---|
Parameter |
|
||||
Nilai Pengembalian |
|
otTcpSendByExtension
otError otTcpSendByExtension( otTcpEndpoint *aEndpoint, size_t aNumBytes, uint32_t aFlags )
Menambahkan data ke buffer pengiriman dengan memperpanjang panjang otLinkedBuffer akhir dalam buffer pengiriman sebesar jumlah yang ditentukan.
Jika buffer pengiriman kosong, maka operasi akan gagal.
Detail | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
||||||
Nilai Pengembalian |
|
otTcpSendByReference
otError otTcpSendByReference( otTcpEndpoint *aEndpoint, otLinkedBuffer *aBuffer, uint32_t aFlags )
Menambahkan data yang direferensikan oleh buffer tertaut yang ditunjuk oleh aBuffer
ke buffer pengiriman.
Setelah panggilan berhasil ke fungsi ini, buffer dan data yang ditautkan dimiliki oleh stack TCP; keduanya tidak boleh dimodifikasi oleh aplikasi sampai callback "send completed" mengembalikan kepemilikan objek tersebut ke aplikasi. Anda dapat memanggil fungsi ini untuk menambahkan buffering tertaut lainnya ke antrean pengiriman, meskipun callback "send completed" untuk pemanggilan sebelumnya dari fungsi ini belum diaktifkan.
Perhatikan bahwa aBuffer
tidak boleh dirantai; kolom mNext-nya harus NULL. Jika data tambahan akan ditambahkan tepat setelah panggilan ini, tanda OT_TCP_SEND_MORE_TO_COME harus digunakan sebagai petunjuk untuk implementasi TCP.
Detail | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
||||||
Nilai Pengembalian |
|
otTcpSendEndOfStream
otError otTcpSendEndOfStream( otTcpEndpoint *aEndpoint )
Memberi tahu peer koneksi bahwa endpoint TCP ini tidak akan mengirim data lebih banyak.
Ini harus digunakan saat aplikasi tidak memiliki data lagi untuk dikirim ke peer koneksi. Untuk koneksi ini, pembacaan mendatang pada peer koneksi akan menghasilkan kondisi "akhir streaming", dan penulisan di masa mendatang pada endpoint koneksi ini akan gagal.
Kondisi "akhir aliran" hanya berlaku setelah data apa pun yang sebelumnya disediakan ke tumpukan TCP untuk dikirim telah diterima oleh peer koneksi.
Detail | |||||
---|---|---|---|---|---|
Parameter |
|
||||
Nilai Pengembalian |
|
otTcpStopListening
otError otTcpStopListening( otTcpListener *aListener )
Menyebabkan pemroses TCP ini berhenti memproses koneksi yang masuk.
Detail | |||||
---|---|---|---|---|---|
Parameter |
|
||||
Nilai Pengembalian |
|
Makro
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 dan OT_TCP_ENDPOINT_TCB_NUM_POINTERS dipilih sedemikian rupa sehingga kolom mTcb otTcpEndpoint memiliki ukuran yang sama dengan struct tcpcb di TCPlp.
Hal ini diperlukan karena bidang mTcb, walaupun buram dalam deklarasinya, diperlakukan sebagai struct tcpcb dalam implementasi TCP.
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
OT_TCP_LISTENER_TCB_SIZE_BASE dan OT_TCP_LISTENER_TCB_NUM_POINTERS dipilih sedemikian rupa sehingga kolom mTcbListener dari otTcpListener memiliki ukuran yang sama dengan struct tcpcb_listen di TCPlp.
Hal ini diperlukan karena kolom mTcbListen, meskipun buram dalam deklarasinya, diperlakukan sebagai struct tcpcb dalam implementasi TCP.
OT_TCP_RECEIVE_BUFFER_SIZE_FEW_HOPS
OT_TCP_RECEIVE_BUFFER_SIZE_FEW_HOPS 2598
Ukuran buffer yang direkomendasikan untuk koneksi TCP yang melintasi sekitar 3 hop nirkabel atau kurang.
Pada platform dengan memori yang sangat terbatas dan dalam situasi ketika bandwidth tinggi tidak diperlukan, sebaiknya pilih ukuran buffer yang lebih kecil secara manual.
OT_TCP_RECEIVE_BUFFER_SIZE_MANY_HOPS
OT_TCP_RECEIVE_BUFFER_SIZE_MANY_HOPS 4157
Ukuran buffer yang direkomendasikan untuk koneksi TCP yang melintasi banyak hop nirkabel.
Jika koneksi TCP melintasi sejumlah besar hop (lebih dari 6 atau lebih), maka mungkin disarankan untuk memilih ukuran buffer yang besar secara manual.
Referensi
Topik Referensi OpenThread API berasal dari kode sumber yang tersedia di GitHub. Untuk informasi selengkapnya, atau untuk berkontribusi pada dokumentasi kami, lihat Referensi.