Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.
Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.

TCP

Modul ini mencakup fungsi yang mengontrol komunikasi TCP.

Ringkasan

Enumerasi

anonymous enum enum
Enumerasi ini menentukan flag yang diteruskan ke otTcpConnect().
anonymous enum enum
Enumerasi ini menentukan flag yang diteruskan ke otTcpSendByReference.
otTcpDisconnectedReason enum
otTcpIncomingConnectionAction{
  OT_TCP_INCOMING_CONNECTION_ACTION_ACCEPT,
  OT_TCP_INCOMING_CONNECTION_ACTION_DEFER,
  OT_TCP_INCOMING_CONNECTION_ACTION_REFUSE
}
enum
Enumerasi ini menentukan tindakan koneksi yang masuk.

Typedef

otLinkedBuffer typedef
Struktur buffering yang ditautkan untuk digunakan dengan TCP.
otTcpAcceptDone)(otTcpListener *aListener, otTcpEndpoint *aEndpoint, const otSockAddr *aPeer) typedef
void(*
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 diterima.
otTcpDisconnected)(otTcpEndpoint *aEndpoint, otTcpDisconnectedReason aReason) typedef
void(*
Callback ini menunjukkan bahwa koneksi terputus dan seharusnya tidak lagi digunakan, atau koneksi telah memasuki status TIME-WAIT.
otTcpDisconnectedReason typedef
enum otTcpDisconnectedReason
otTcpEndpoint typedef
struct otTcpEndpoint
otTcpEndpointInitializeArgs typedef
Struktur ini berisi argumen ke fungsi otTcpEndpointInitialize().
otTcpEstablished)(otTcpEndpoint *aEndpoint) typedef
void(*
Callback ini akan memberi tahu aplikasi bahwa handshake 3 arah TCP telah selesai dan bahwa koneksi sekarang dibuat.
otTcpForwardProgress)(otTcpEndpoint *aEndpoint, size_t aInSendBuffer, size_t aBacklog) typedef
void(*
Callback ini menginformasikan aplikasi jika progres penerusan telah dilakukan dalam mentransfer data dari buffer pengiriman ke penerima.
otTcpIncomingConnectionAction typedef
Enumerasi ini menentukan tindakan koneksi yang masuk.
otTcpListener typedef
struct otTcpListener
otTcpListenerInitializeArgs typedef
Struktur ini berisi argumen ke fungsi otTcpListenerInitialize().
otTcpReceiveAvailable)(otTcpEndpoint *aEndpoint, size_t aBytesAvailable, bool aEndOfStream, size_t aBytesRemaining) typedef
void(*
Callback ini menunjukkan jumlah byte yang tersedia untuk digunakan dari buffer penerimaan.
otTcpSendDone)(otTcpEndpoint *aEndpoint, otLinkedBuffer *aData) typedef
void(*
Callback ini akan memberi tahu aplikasi bahwa data dalam aData yang diberikan telah dikonfirmasi oleh peer koneksi, dan bahwa aData serta data yang ada di dalamnya dapat diklaim kembali oleh aplikasi.

Fungsi

otTcpAbort(otTcpEndpoint *aEndpoint)
Mengakhiri paksa 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 data byte aNumBytes di awal buffer penerimaan dan bahwa stack TCP tidak perlu terus mempertahankan byte tersebut di buffer penerimaan.
otTcpConnect(otTcpEndpoint *aEndpoint, const otSockAddr *aSockName, uint32_t aFlags)
Merekam host dan port jarak jauh untuk koneksi ini.
otTcpEndpointDeinitialize(otTcpEndpoint *aEndpoint)
Melakukan inisialisasi endpoint TCP ini.
otTcpEndpointGetContext(otTcpEndpoint *aEndpoint)
void *
Memperoleh pointer konteks yang terkait dengan aEndpoint saat inisialisasi.
otTcpEndpointGetInstance(otTcpEndpoint *aEndpoint)
Memperoleh 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 endpoint endpoint TCP.
otTcpListen(otTcpListener *aListener, const otSockAddr *aSockName)
Menyebabkan koneksi TCP masuk yang cocok dengan port dan alamat IP yang ditentukan untuk memicu callback pemroses TCP ini.
otTcpListenerDeinitialize(otTcpListener *aListener)
Melakukan inisialisasi pemroses TCP ini.
otTcpListenerGetContext(otTcpListener *aListener)
void *
Memperoleh pointer konteks yang terkait dengan aListener saat inisialisasi.
otTcpListenerGetInstance(otTcpListener *aListener)
Memperoleh 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 terkait yang mereferensikan data yang saat ini ada 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 dirujuk oleh buffer tertaut yang diarahkan oleh aBuffer ke buffer pengiriman.
otTcpSendEndOfStream(otTcpEndpoint *aEndpoint)
Menginformasikan peer koneksi bahwa endpoint TCP ini tidak akan mengirim lebih banyak data.
otTcpStopListening(otTcpListener *aListener)
Menyebabkan pemroses TCP ini berhenti mendeteksi koneksi masuk.

Struct

otLinkedBuffer

Struktur buffering yang ditautkan untuk digunakan dengan TCP.

otTcpEndpoint

Struktur ini mewakili endpoint TCP.

otTcpEndpointInitializeArgs

Struktur ini berisi argumen ke fungsi otTcpEndpointInitialize().

otTcpListener

Struktur ini mewakili pemroses TCP.

otTcpListenerInitializeArgs

Struktur ini berisi argumen ke fungsi otTcpListenerInitialize().

Enumerasi

enum anonim

 anonymous enum

Enumerasi ini menentukan flag yang diteruskan ke otTcpConnect().

enum anonim

 anonymous enum

Enumerasi ini menentukan flag yang diteruskan ke otTcpSendByReference.

otTcpDisconnectedReason

 otTcpDisconnectedReason

otTcpIncomingConnectionAction

 otTcpIncomingConnectionAction

Enumerasi ini menentukan tindakan koneksi yang masuk.

Ini digunakan di callback otTcpAcceptReady().

Properti
OT_TCP_INCOMING_CONNECTION_ACTION_ACCEPT

Terima koneksi masuk.

OT_TCP_INCOMING_CONNECTION_ACTION_DEFER

Menunda (diam-diam mengabaikan) koneksi masuk.

OT_TCP_INCOMING_CONNECTION_ACTION_REFUSE

Tolak koneksi masuk.

Typedef

otLinkedBuffer

struct otLinkedBuffer otLinkedBuffer

Struktur buffering 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.

otTcpAcceptSelesai

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, hal ini mungkin terjadi sebelum handshake koneksi TCP telah selesai. Aplikasi ini diberi petunjuk konteks, baik untuk pemroses TCP yang menerima sambungan maupun titik akhir TCP yang akan menerima aplikasi tersebut. Konteks yang diberikan adalah konteks yang terkait dengan pemroses TCP.

Detail
Parameter
[in] aListener
Pemroses TCP yang cocok dengan koneksi masuk.
[in] aEndpoint
Endpoint TCP tempat koneksi masuk diterima.
[in] aPeer
host dan port tempat koneksi masuk berasal.

otTcpAcceptReady

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

Callback ini menunjukkan bahwa koneksi masuk yang cocok dengan pemroses TCP ini telah diterima.

Respons umumnya adalah agar aplikasi menerima koneksi masuk. Hal ini dilakukan dengan mengisi aAcceptInto dengan pointer ke otTcpEndpoint untuk menerima koneksi masuk. otTcpEndpoint ini harus sudah diinisialisasi menggunakan otTcpEndpointInitialize(). Kemudian, aplikasi akan menampilkan OT_TCP_INCOMING_CONNECTION_ACTION_ACCEPTED.

Atau, aplikasi dapat menolak untuk menerima koneksi masuk. Ada dua cara bagi aplikasi untuk melakukannya. Pertama, jika aplikasi menampilkan OT_TCP_INCOMING_CONNECTION_ACTION_DEFER, OpenThread diam-diam mengabaikan permintaan pembuatan koneksi; peer koneksi mungkin akan mengirim ulang permintaan, dan pada saat itu callback akan dipanggil lagi. Ini berguna jika resource saat ini tidak tersedia untuk menerima koneksi, tetapi mungkin tersedia saat peer koneksi mentransmisikan upaya pembentukan koneksinya. Kedua, jika aplikasi menampilkan OT_TCP_INCOMING_CONNECTION_ACTION_REFUSE, OpenThread akan mengirim pesan "koneksi ditolak" pesan ke host yang berupaya membuat koneksi. Jika aplikasi menolak koneksi masuk, aplikasi tidak perlu mengisi aAcceptInto.

Detail
Parameter
[in] aListener
Pemroses TCP yang cocok dengan koneksi masuk.
[in] aPeer
Host dan port tempat koneksi masuk berasal.
[out] aAcceptInto
Endpoint TCP yang akan menerima koneksi masuk.
Menampilkan
Deskripsi cara menangani koneksi masuk.

otTcpTidak terhubung

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

Callback ini menunjukkan bahwa koneksi terputus dan seharusnya tidak lagi digunakan, atau koneksi telah memasuki status TIME-WAIT.

Hal ini dapat terjadi jika upaya pembuatan koneksi (dimulai dengan memanggil otTcpConnect()) gagal, atau titik mana pun setelahnya (misalnya, 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 yang dirujuknya, tetapi bukan endpoint TCP atau ruang untuk buffer penerimaannya) dapat diklaim kembali. Dalam kasus koneksi yang memasuki status TIME-WAIT, callback ini akan dipanggil dua kali, satu kali saat masuk ke status TIME-WAIT (dengan OT_TCP_DISCONNECTED_REASON_TIME_WAIT, dan sekali lagi saat status TIME-WAIT berakhir (dengan OT_TCP_DISCONNECTED_REASON_NORMAL).

Detail
Parameter
[in] aEndpoint
Endpoint TCP yang koneksinya terputus.
[in] aReason
Alasan koneksi terputus.

otTcpDisconnectedReason

enum otTcpDisconnectedReason otTcpDisconnectedReason

otTcpEndpoint

struct otTcpEndpoint otTcpEndpoint

otTcpEndpointInitializeArgs

struct otTcpEndpointInitializeArgs otTcpEndpointInitializeArgs

Struktur ini berisi argumen ke fungsi otTcpEndpointInitialize().

otTcpDidirikan

void(* otTcpEstablished)(otTcpEndpoint *aEndpoint)

Callback ini akan memberi tahu aplikasi bahwa handshake 3 arah TCP telah selesai dan bahwa koneksi sekarang dibuat.

Detail
Parameter
[in] aEndpoint
Endpoint TCP yang koneksinya sekarang dibuat.

otTcpForwardProgress

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

Callback ini menginformasikan aplikasi jika progres penerusan telah dilakukan dalam mentransfer data dari buffer pengiriman ke penerima.

Callback ini tidak diperlukan untuk operasi TCP yang benar. Kebanyakan aplikasi hanya dapat mengandalkan callback otTcpSendDone() untuk mengklaim kembali buffer yang telah ditautkan setelah stack TCP selesai menggunakannya. Tujuan dari callback ini adalah untuk mendukung aplikasi lanjutan yang diuntungkan oleh informasi yang lebih terperinci tentang kemajuan koneksi dalam mentransfer data ke pembanding koneksi.

Operasi callback ini terkait erat dengan buffer pengiriman TCP. Buffering pengiriman dapat dipahami memiliki dua region. Pertama, terdapat wilayah "dalam penerbangan" di bagian kepala (depan) buffer pengiriman. Ini berkaitan dengan data yang telah dikirimkan ke penerima, namun belum dikonfirmasi. Kedua, terdapat wilayah "backlog" yang terdiri dari semua data dalam buffer pengiriman yang tidak berada dalam wilayah "dalam penerbangan". Region "backlog" sesuai dengan data yang dimasukkan dalam antrean untuk dikirim, tetapi belum dikirim.

Callback dipanggil sebagai respons terhadap dua jenis peristiwa. Pertama, wilayah "dalam penerbangan" buffer pengiriman dapat menyusut (misalnya, saat penerima mengonfirmasi data yang kami kirim sebelumnya). Kedua, wilayah "backlog" buffering pengiriman dapat menyusut (misalnya, data baru dikirim). Kedua kondisi ini sering terjadi secara bersamaan, sebagai respons terhadap segmen ACK dari pembanding koneksi, itulah sebabnya keduanya digabungkan dalam satu callback.

Stack TCP hanya menggunakan byte aInSendBuffer di bagian akhir buffer pengiriman; jika aInSendBuffer dikurangi sebesar x, berarti bahwa x byte tambahan yang sebelumnya berada di bagian atas 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 mengasumsikan otTcpSendDone(), dalam arti berikut: aplikasi dapat menentukan waktu buffer yang dapat diklaim kembali dengan membandingkan aInSendBuffer dengan jumlah byte dalam setiap buffer tertaut. Namun, kita mengharapkan otTcpSendDone(), yang secara langsung menyampaikan otLinkedBuffers yang dapat diklaim ulang, menjadi jauh lebih mudah digunakan. Jika kedua callback terdaftar dan dipicu oleh peristiwa yang sama (mis., segmen ACK yang sama diterima), callback otTcpSendDone() akan dipicu terlebih dahulu, diikuti callback ini.

Selain itu, callback ini menyediakan aBacklog, yang menunjukkan jumlah byte data dalam buffer pengiriman yang belum terkirim. Untuk aplikasi yang hanya ingin menambahkan data ke buffer pengiriman jika ada jaminan bahwa data akan segera dikirim, mungkin lebih baik hanya mengirim data jika aBacklog sesuai untuk ukuran kecil (0 atau mendekati 0). Misalnya, aplikasi dapat menggunakan aBacklog agar dapat bereaksi terhadap antrean dengan menjatuhkan 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 segera dilakukan setelah byte ditambahkan ke buffer pengiriman (jika beberapa byte tersebut langsung dikirim, mengurangi backlog), atau suatu saat nanti (setelah koneksi mengirim sebagian atau semua data, mengurangi backlog). Dengan "segera," yang kami maksud adalah callback segera dijadwalkan untuk dieksekusi dalam tasklet; untuk menghindari kompleksitas terkait reentrancy, callback otTcpForwardProgress() tidak pernah dipanggil langsung dari fungsi otTcpSendByReference() atau otTcpSendByExtension().

Detail
Parameter
[in] aEndpoint
Endpoint TCP untuk koneksi.
[in] aInSendBuffer
Jumlah byte dalam buffering pengiriman (jumlah dari "in-flight" dan "backlog" region).
[in] aBacklog
Jumlah byte yang dimasukkan dalam antrean untuk pengiriman, tetapi belum dikirim (wilayah "backlog").

otTcpIncomingConnectionAction

enum otTcpIncomingConnectionAction otTcpIncomingConnectionAction

Enumerasi ini menentukan tindakan koneksi yang masuk.

Ini digunakan di callback otTcpAcceptReady().

otTcpListener

struct otTcpListener otTcpListener

otTcpListenerInitializeArgs

struct otTcpListenerInitializeArgs otTcpListenerInitializeArgs

Struktur ini berisi argumen ke fungsi otTcpListenerInitialize().

otTcpReceiveTersedia

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

Callback ini menunjukkan jumlah byte yang tersedia untuk digunakan dari buffer penerimaan.

Metode 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 akan tersedia untuk dibaca karena peer koneksi telah menutup koneksi koneksi untuk menulis), maka aEndOfStream adalah benar. Terakhir, aBytesRemaining menunjukkan banyaknya kapasitas yang tersisa dalam buffer penerimaan untuk menampung data tambahan yang masuk.

Detail
Parameter
[in] aEndpoint
Endpoint TCP untuk koneksi.
[in] aBytesAvailable
Jumlah byte dalam koneksi yang menerima buffer.
[in] aEndOfStream
Menunjukkan apakah data tambahan, di luar yang sudah ada dalam koneksi menerima buffer, dapat diterima.
[in] aBytesRemaining
Jumlah byte tambahan yang dapat diterima sebelum buffer penerimaan menjadi penuh.

otTcpSendSelesai

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

Callback ini akan memberi tahu aplikasi bahwa data dalam aData yang diberikan telah dikonfirmasi oleh peer koneksi, dan bahwa aData serta data yang ada di dalamnya dapat diklaim kembali oleh aplikasi.

aData dijamin sama dengan yang diteruskan ke TCP melalui otTcpSendByReference(), termasuk semua ekstensi yang diterapkan melalui otTcpSendByExtension().

Detail
Parameter
[in] aEndpoint
Endpoint TCP untuk koneksi.
[in] aData
Pointer ke otLinkedBuffer yang dapat diklaim kembali.

Fungsi

otTcpAbort

otError otTcpAbort(
  otTcpEndpoint *aEndpoint
)

Mengakhiri paksa koneksi TCP yang terkait dengan endpoint TCP ini.

Tindakan ini akan segera membuat endpoint TCP gratis untuk digunakan bagi koneksi lain dan mengosongkan buffer kirim dan terima, serta mentransfer kepemilikan data apa pun yang disediakan oleh aplikasi dalam panggilan otTcpSendByReference() dan otTcpSendByExtension() ke aplikasi. Callback dan memori endpoint TCP untuk buffer penerimaan tetap dikaitkan dengan endpoint TCP.

Detail
Parameter
[in] aEndpoint
Pointer ke struktur endpoint TCP yang merepresentasikan endpoint TCP untuk dibatalkan.
Nilai yang Ditampilkan
OT_ERROR_NONE
Berhasil membatalkan koneksi endpoint TCP.
OT_ERROR_FAILED
Gagal membatalkan koneksi endpoint TCP.

otTcpBind

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

Mengikat endpoint TCP ke alamat IP dan port.

Detail
Parameter
[in] aEndpoint
Pointer ke struktur endpoint TCP untuk diikat.
[in] aSockName
Alamat dan port tujuan untuk mengikat endpoint TCP ini.
Nilai yang Ditampilkan
OT_ERROR_NONE
Berhasil mengikat endpoint TCP.
OT_ERROR_FAILED
Gagal mengikat endpoint TCP.

otTcpCommitReceive

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

Memberi tahu stack TCP bahwa aplikasi telah selesai memproses data byte aNumBytes di awal buffer penerimaan dan bahwa stack TCP tidak perlu terus mempertahankan byte tersebut di buffer penerimaan.

Detail
Parameter
[in] aEndpoint
Pointer ke struktur endpoint TCP yang merepresentasikan endpoint TCP untuk menerima data.
[in] aNumBytes
Jumlah byte yang digunakan.
[in] aFlags
Tanda yang menentukan opsi untuk operasi ini (belum ada).
Nilai yang Ditampilkan
OT_ERROR_NONE
Berhasil menyelesaikan operasi terima.
OT_ERROR_FAILED
Gagal menyelesaikan operasi penerimaan.

otTcpConnect

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

Merekam host dan port jarak jauh untuk koneksi ini.

Secara default, Buka Cepat TCP digunakan. Ini berarti bahwa fungsi ini hanya mencatat host dan port jarak jauh, dan handshake handshake koneksi TCP hanya terjadi pada panggilan pertama ke otTcpSendByReference(). Buka Cepat TCP dapat dinonaktifkan secara eksplisit menggunakan aFlags, dalam hal ini handshake handshake koneksi TCP dimulai segera.

Detail
Parameter
[in] aEndpoint
Pointer ke struktur endpoint TCP untuk dihubungkan.
[in] aSockName
Alamat IP dan port host yang akan dihubungkan.
[in] aFlags
Tanda yang menentukan opsi untuk operasi ini (lihat enumerasi di atas).
Nilai yang Ditampilkan
OT_ERROR_NONE
Berhasil menyelesaikan operasi.
OT_ERROR_FAILED
Gagal menyelesaikan operasi ini.

otTcpEndpointDeinisialisasi

otError otTcpEndpointDeinitialize(
  otTcpEndpoint *aEndpoint
)

Melakukan inisialisasi endpoint TCP ini.

Artinya, OpenThread tidak lagi melacak endpoint TCP ini dan membatalkan semua resource yang telah dialokasikan secara internal untuk endpoint TCP ini. Aplikasi dapat menggunakan kembali memori yang mencadangkan endpoint TCP sesuai keperluan.

Jika sesuai dengan koneksi TCP langsung, koneksi akan dihentikan secara serempak (seperti dalam otTcpAbort()). Semua resource yang telah disediakan aplikasi untuk endpoint TCP ini (buffer terkait untuk buffer pengiriman, memori untuk buffer penerimaan, struktur aEndpoint itu sendiri, dll.) akan segera dikembalikan ke aplikasi.

Detail
Parameter
[in] aEndpoint
Pointer ke struktur endpoint TCP untuk melakukan inisialisasi.
Nilai yang Ditampilkan
OT_ERROR_NONE
Berhasil menginisialisasi endpoint TCP.
OT_ERROR_FAILED
Gagal melakukan inisialisasi endpoint TCP.

otTcpEndpointGetContext

void * otTcpEndpointGetContext(
  otTcpEndpoint *aEndpoint
)

Memperoleh pointer konteks yang terkait dengan aEndpoint saat inisialisasi.

Detail
Parameter
[in] aEndpoint
Endpoint TCP yang konteksnya akan diperoleh.
Menampilkan
Pointer konteks yang terkait dengan aEndpoint.

otTcpEndpointGetInstance

otInstance * otTcpEndpointGetInstance(
  otTcpEndpoint *aEndpoint
)

Memperoleh otInstance yang terkait dengan aEndpoint saat inisialisasi.

Detail
Parameter
[in] aEndpoint
Endpoint TCP yang instance-nya akan diperoleh.
Menampilkan
Pointer otInstance yang terkait dengan aEndpoint.

otTcpEndpointInitialize

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

Menginisialisasi endpoint TCP.

Memanggil fungsi ini menyebabkan OpenThread terus melacak endpoint TCP dan menyimpan serta mengambil data TCP dalam aEndpoint. Aplikasi harus berhenti mengakses atau mengubah kolom di aEndpoint secara langsung. Jika aplikasi perlu mengklaim kembali aEndpoint pendukung memori, aplikasi harus memanggil otTcpEndpointDeinisialisasi().

Detail
Parameter
[in] aInstance
Pointer ke instance OpenThread.
[in] aEndpoint
Pointer ke struktur endpoint TCP.
[in] aArgs
Pointer ke struktur argumen.
Nilai yang Ditampilkan
OT_ERROR_NONE
Berhasil membuka endpoint TCP.
OT_ERROR_FAILED
Gagal membuka endpoint TCP.

otTcpGetLocalAddress

const otSockAddr * otTcpGetLocalAddress(
  const otTcpEndpoint *aEndpoint
)

Mendapatkan pointer ke host dan port lokal endpoint TCP.

Isi host dan port mungkin basi jika soket ini tidak dalam status terhubung dan belum terikat setelah terakhir kali terputus.

Detail
Parameter
[in] aEndpoint
Endpoint TCP yang host dan port lokalnya akan didapatkan.
Menampilkan
Host lokal dan port aEndpoint.

otTcpGetPeerAddress

const otSockAddr * otTcpGetPeerAddress(
  const otTcpEndpoint *aEndpoint
)

Mendapatkan pointer ke host dan port endpoint endpoint TCP.

Isi host dan port mungkin sudah usang jika soket ini tidak dalam status terhubung.

Detail
Parameter
[in] aEndpoint
Endpoint TCP yang host dan port peer-nya ingin diperoleh.
Menampilkan
Host dan port pembanding koneksi aEndpoint.

otTcpDengarkan

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

Menyebabkan koneksi TCP masuk yang cocok dengan port dan alamat IP yang ditentukan untuk memicu callback pemroses TCP ini.

Detail
Parameter
[in] aListener
Pointer ke struktur pemroses TCP yang akan mulai memproses.
[in] aSockName
Alamat dan port untuk memproses koneksi masuk.
Nilai yang Ditampilkan
OT_ERROR_NONE
Berhasil memulai pemrosesan pada pemroses TCP.
OT_ERROR_FAILED
Gagal memulai pemrosesan di pemroses TCP.

otTcpListenerDeinisialisasi

otError otTcpListenerDeinitialize(
  otTcpListener *aListener
)

Melakukan inisialisasi pemroses TCP ini.

Artinya, OpenThread tidak lagi melacak pemroses TCP ini dan membatalkan semua semua resource yang telah dialokasikan secara internal untuk pemroses TCP ini. Aplikasi dapat menggunakan kembali memori yang mencadangkan pemroses TCP sesuai kebutuhan.

Jika pemroses TCP sedang mendengarkan, pemroses tersebut akan berhenti memproses.

Detail
Parameter
[in] aListener
Pointer ke struktur pemroses TCP untuk melakukan inisialisasi.
Nilai yang Ditampilkan
OT_ERROR_NONE
Berhasil melakukan inisialisasi pemroses TCP.
OT_ERROR_FAILED
Gagal melakukan inisialisasi pemroses TCP.

otTcpListenerGetContext

void * otTcpListenerGetContext(
  otTcpListener *aListener
)

Memperoleh pointer konteks yang terkait dengan aListener saat inisialisasi.

Detail
Parameter
[in] aListener
Pemroses TCP yang konteksnya akan diperoleh.
Menampilkan
Pointer konteks yang terkait dengan aListener.

otTcpListenerGetInstance

otInstance * otTcpListenerGetInstance(
  otTcpListener *aListener
)

Memperoleh otInstance yang terkait dengan aListener saat inisialisasi.

Detail
Parameter
[in] aListener
Pemroses TCP yang instance-nya akan diperoleh.
Menampilkan
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 terus melacak pemroses TCP dan menyimpan serta mengambil data TCP dalam aListener. Aplikasi harus berhenti mengakses atau mengubah kolom di aListener secara langsung. Jika aplikasi perlu mengklaim kembali aListener pendukung memori, aplikasi harus memanggil otTcpListenerDeinisialisasi().

Detail
Parameter
[in] aInstance
Pointer ke instance OpenThread.
[in] aListener
Pointer ke struktur pemroses TCP.
[in] aArgs
Pointer ke struktur argumen.
Nilai yang Ditampilkan
OT_ERROR_NONE
Berhasil membuka pemroses TCP.
OT_ERROR_FAILED
Gagal membuka pemroses TCP.

otTcpReceiveByReference

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

Menyediakan aplikasi dengan rantai buffer terkait yang mereferensikan data yang saat ini ada dalam buffer penerimaan TCP.

Rantai buffering yang ditautkan akan valid hingga callback "receive ready" panggilan berikutnya dipanggil, atau hingga panggilan berikutnya ke otTcpReceiveContiguify() atau otTcpCommitReceive().

Detail
Parameter
[in] aEndpoint
Pointer ke struktur endpoint TCP yang merepresentasikan endpoint TCP untuk menerima data.
[out] aBuffer
Pointer ke rantai buffer terkait yang merujuk data yang saat ini berada dalam buffer penerimaan.
Nilai yang Ditampilkan
OT_ERROR_NONE
Berhasil menyelesaikan operasi.
OT_ERROR_FAILED
Gagal menyelesaikan operasi ini.

otTcpReceiveContiguify

otError otTcpReceiveContiguify(
  otTcpEndpoint *aEndpoint
)

Mengatur ulang buffer penerimaan agar sepenuhnya berdekatan dalam memori.

Hal ini opsional; aplikasi dapat melewati rantai buffer terkait yang diperoleh dengan memanggil otTcpReceiveByReference. Beberapa aplikasi mungkin ingin memanggil fungsi ini untuk membuat buffer penerimaan berdekatan untuk menyederhanakan pemrosesan data, tetapi hal ini mengorbankan waktu CPU untuk mengatur ulang data dalam buffer penerimaan.

Detail
Parameter
[in] aEndpoint
Pointer ke endpoint TCP yang menerima buffer untuk mengatur ulang.
Nilai yang Ditampilkan
OT_ERROR_NONE
Berhasil menyelesaikan operasi.
OT_ERROR_FAILED
Gagal menyelesaikan operasi ini.

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, operasi akan gagal.

Detail
Parameter
[in] aEndpoint
Pointer ke struktur endpoint TCP yang merepresentasikan endpoint TCP untuk mengirim data.
[in] aNumBytes
Jumlah byte yang digunakan untuk memperpanjang panjang buffering akhir yang ditautkan.
[in] aFlags
Tanda yang menentukan opsi untuk operasi ini (lihat enumerasi di atas).
Nilai yang Ditampilkan
OT_ERROR_NONE
Berhasil menambahkan data ke buffering pengiriman.
OT_ERROR_FAILED
Gagal menambahkan data ke buffering pengiriman.

otTcpSendByReference

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

Menambahkan data yang dirujuk oleh buffer tertaut yang diarahkan oleh aBuffer ke buffer pengiriman.

Setelah panggilan yang berhasil ke fungsi ini, buffering dan data tertaut yang dirujuknya dimiliki oleh tumpukan TCP; tidak boleh dimodifikasi oleh aplikasi sampai callback "kirim selesai" callback mengembalikan kepemilikan objek tersebut ke aplikasi. Anda dapat memanggil fungsi ini untuk menambahkan buffer tertaut lainnya ke antrean pengiriman, meskipun callback "send completed" untuk pemanggilan sebelumnya fungsi ini belum diaktifkan.

Perhatikan bahwa aBuffer tidak boleh dirantai; kolom mNext-nya harus NULL. Jika data tambahan akan ditambahkan segera setelah panggilan ini, tanda OT_TCP_SEND_MORE_TO_COME harus digunakan sebagai petunjuk untuk implementasi TCP.

Detail
Parameter
[in] aEndpoint
Pointer ke struktur endpoint TCP yang merepresentasikan endpoint TCP untuk mengirim data.
[in] aBuffer
Pointer ke rantai buffer terkait yang mereferensikan data untuk ditambahkan ke buffer pengiriman.
[in] aFlags
Tanda yang menentukan opsi untuk operasi ini (lihat enumerasi di atas).
Nilai yang Ditampilkan
OT_ERROR_NONE
Berhasil menambahkan data ke buffering pengiriman.
OT_ERROR_FAILED
Gagal menambahkan data ke buffering pengiriman.

otTcpSendEndOfStream

otError otTcpSendEndOfStream(
  otTcpEndpoint *aEndpoint
)

Menginformasikan peer koneksi bahwa endpoint TCP ini tidak akan mengirim lebih banyak data.

Ini harus digunakan saat aplikasi tidak memiliki data lagi untuk dikirim ke peer koneksi. Untuk koneksi ini, operasi baca berikutnya pada peer koneksi akan mengakibatkan kondisi "akhir streaming" dan operasi tulis di endpoint koneksi ini akan gagal.

Kondisi "akhir aliran data" hanya berlaku setelah data yang sebelumnya disediakan ke stack TCP untuk dikirim telah diterima oleh peer koneksi.

Detail
Parameter
[in] aEndpoint
Pointer ke struktur endpoint TCP yang merepresentasikan endpoint TCP untuk dinonaktifkan.
Nilai yang Ditampilkan
OT_ERROR_NONE
Berhasil mengantrekan kondisi "akhir aliran" untuk transmisi.
OT_ERROR_FAILED
Gagal mengantrekan ketentuan "akhir aliran" untuk transmisi.

otTcpStopDengarkan

otError otTcpStopListening(
  otTcpListener *aListener
)

Menyebabkan pemroses TCP ini berhenti mendeteksi koneksi masuk.

Detail
Parameter
[in] aListener
Pointer ke struktur pemroses TCP yang akan berhenti memproses.
Nilai yang Ditampilkan
OT_ERROR_NONE
Berhasil berhenti memantau pemroses TCP.
OT_ERROR_FAILED
Gagal berhenti mendengarkan pemroses TCP.

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 368

OT_TCP_ENDPOINT_TCB_SIZE_BASE dan OT_TCP_ENDPOINT_TCB_NUM_POINTERS dipilih sehingga kolom mTcb otTcpEndpoint memiliki ukuran yang sama dengan tcpcb struct dalam TCPlp.

Hal ini diperlukan karena kolom mTcb, meskipun buram dalam deklarasinya, dianggap sebagai tcpcb struct 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 pada otTcpListener memiliki ukuran yang sama dengan struct tcpcb_listen di TCPlp.

Hal ini diperlukan karena kolom mTcbListener, meskipun buram dalam deklarasinya, dianggap sebagai tcpcb struct 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 lompatan nirkabel atau kurang.

Pada platform yang memorinya sangat terbatas dan dalam situasi ketika bandwidth tinggi tidak diperlukan, sebaiknya pilih ukuran buffer yang lebih kecil secara manual.

OT_TCP_RECEIVE_BUFFER_UKURAN_MANY_HOPS

 OT_TCP_RECEIVE_BUFFER_SIZE_MANY_HOPS 4157

Ukuran buffer yang direkomendasikan untuk koneksi TCP yang melintasi banyak lompatan nirkabel.

Jika koneksi TCP melintasi jumlah lompatan yang sangat besar (lebih dari 6, lebih), mungkin akan lebih baik untuk memilih ukuran buffer yang besar secara manual.

Resource

Topik Referensi OpenThread API berasal dari kode sumber, yang tersedia di GitHub. Untuk mengetahui informasi selengkapnya, atau untuk berkontribusi ke dokumentasi kami, lihat Referensi.