nl:: İnternet:: TCPBitiş Noktası
#include <src/inet/TCPEndPoint.h>
Bu sınıfın nesneleri, TCP aktarım uç noktalarını temsil eder.
özet
Nest Inet Katmanı, sistem buna göre yapılandırıldığı için TCP aktarım uç noktaları (Linux ve BSD türevli sistemlerde SOCK_STREAM soketleri) veya LwIP TCP protokolü kontrol bloklarıyla etkileşime girme yöntemlerini kapsar.
miras
: Den devralır nl :: Inet :: EndPointBasisGenel türler | |
---|---|
@10 { | Sıralama Temel alınan uç noktanın temel dinamik durumu. |
OnAcceptErrorFunct )(TCPEndPoint *endPoint, INET_ERROR err) | typedefvoid(* Bağlantı türü kabul hatası olay işleme işlevi. |
OnConnectCompleteFunct )(TCPEndPoint *endPoint, INET_ERROR err) | typedefvoid(* Bağlantı kurma olay işleme işlevi türü. |
OnConnectionClosedFunct )(TCPEndPoint *endPoint, INET_ERROR err) | typedefvoid(* Bağlantı kurma olay işleme işlevi türü. |
OnConnectionReceivedFunct )(TCPEndPoint *listeningEndPoint, TCPEndPoint *conEndPoint, const IPAddress &peerAddr, uint16_t peerPort) | typedefvoid(* Bağlantı türü alınan olay işleme işlevi. |
OnDataReceivedFunct )(TCPEndPoint *endPoint, Weave::System::PacketBuffer *data) | typedefvoid(* Veri alma olayı işleme işlevi türü. |
OnDataSentFunct )(TCPEndPoint *endPoint, uint16_t len) | typedefvoid(* Veri iletimi olay işleme işlevinin türü. |
OnPeerCloseFunct )(TCPEndPoint *endPoint) | typedefvoid(* Yarı kapalı alım olay işleme işlevinin türü. |
OnTCPSendIdleChangedFunct )(TCPEndPoint *endPoint, bool isIdle) | typedefvoid(* TCP SendIdle tipi değişti sinyal işleme işlevi. |
Genel özellikler | |
---|---|
OnAcceptError | Uç noktanın bağlantı kabul olayı işleme işlevi temsilcisi. |
OnConnectComplete | Uç noktanın bağlantı kurma olay işleme işlevi temsilcisi. |
OnConnectionClosed | Uç noktanın yakın olay işleme işlevi temsilcisi. |
OnConnectionReceived | Uç noktanın bağlantısı, olay işleme işlevi temsilcisini alır. |
OnDataReceived | Uç noktanın mesaj metni alımı olay işleme işlevi temsilcisi. |
OnDataSent | Uç noktanın mesaj metni iletimi olay işleme işlevi temsilcisi. |
OnPeerClose | Uç noktanın yarı kapalı alma olayı işleme işlevi temsilcisi. |
OnTCPSendIdleChanged | TCP bağlantısının gönderme kanalının boşta kalma durumu değiştiğinde uç nokta sinyalinin olay işleme işlevi temsilcisi. |
ReceiveEnabled | bool Uygulamanın veri alıp almadığını gösteren kontrol anahtarı. |
State | enum nl::Inet::TCPEndPoint::@10 Temel alınan uç noktanın temel dinamik durumu. |
Kamu işlevleri | |
---|---|
Abort (void) | void Diğer bir deyişle, uç noktayı başarısız bir şekilde kapatın, RST paketleri gönderin. |
AckReceive (uint16_t len) | Mesaj metninin alındığını onaylayın. |
Bind (IPAddressType addrType, IPAddress addr, uint16_t port, bool reuseAddr) | Uç noktayı bir arabirim IP adresine bağlayın. |
Close (void) | Diğer bir deyişle, hem gönderme hem de alma ile biten TCP'yi tamamen kapatın. |
Connect ( IPAddress addr, uint16_t port, InterfaceId intf) | Bir TCP bağlantısı başlatın. |
DisableKeepAlive (void) | TCP "canlı tut" seçeneğini devre dışı bırakın. |
DisableReceive (void) | void Alımı devre dışı bırakın. |
EnableKeepAlive (uint16_t interval, uint16_t timeoutCount) | TCP "canlı tut" seçeneğini etkinleştirin. |
EnableNoDelay (void) | EnableNoDelay. |
EnableReceive (void) | void Alımı etkinleştirin. |
Free (void) | void Hataları yok sayarak TCP'yi tamamen kapatın (veya devam edin). |
GetLocalInfo ( IPAddress *retAddr, uint16_t *retPort) | Yerel uç noktanın IP adresini ve TCP bağlantı noktasını çıkarın. |
GetPeerInfo ( IPAddress *retAddr, uint16_t *retPort) const | Uzak uç noktanın IP adresini ve TCP bağlantı noktasını çıkarın. |
IsConnected (void) const | bool TCP bağlantısının kurulup kurulmadığını çıkarın. |
Listen (uint16_t backlog) | TCP mesajlarını almak için uç noktayı hazırlayın. |
LogId (void) | uint16_t Uç nokta için bir tanımlayıcı edinin. |
MarkActive (void) | void Aktiviteyi not edin, başka bir deyişle, boşta kalma zamanlayıcısını sıfırlayın. |
PendingReceiveLength (void) | uint32_t Onaylanmayan alma verilerinin uzunluğunu çıkarın. |
PendingSendLength (void) | uint32_t İlk iletimi bekleyen verilerin uzunluğunu çıkarın. |
PutBackReceivedData ( Weave::System::PacketBuffer *data) | Mesaj metnini alma kuyruğunun başına geri itin. |
Send ( Weave::System::PacketBuffer *data, bool push) | TCP bağlantısında mesaj metni gönderin. |
SetConnectTimeout (const uint32_t connTimeoutMsecs) | void Connect'in başarılı olması veya bir hata döndürmesi için zaman aşımını ayarlayın. |
SetUserTimeout (uint32_t userTimeoutMillis) | TCP TCP_USER_TIMEOUT soket seçeneğini ayarlayın. |
Shutdown (void) | TCP'yi yarı kapalı başlatın, diğer bir deyişle gönderme ile bitti. |
Genel türler
@10
@10
Temel alınan uç noktanın temel dinamik durumu.
Nesneler "hazır" durumda başlatılır, TCP aktarım durumu makinesinin durumlarının basitleştirilmesine karşılık gelen sonraki durumlara ilerler.
Not: kBasisState_Closed
devlet numaralandırma eşleştirilir kState_Ready
tarihsel ikili uyumluluk nedenlerle. Varolan kState_Closed
ayrı daha önce varolan "henüz açılmamış" ve "daha önce şimdi kapalı açılan" arasındaki ayrımı belirlemek için var kState_Ready
ve kState_Closed
devletler.
OnAcceptErrorFunct
void(* OnAcceptErrorFunct)(TCPEndPoint *endPoint, INET_ERROR err)
Bağlantı türü kabul hatası olay işleme işlevi.
Bu türde bir işlev sağlayın OnAcceptError
üzerinde işlem bağlantısı kabul hatası olaylara temsilci üyesi endPoint
. err
argüman hata türü hakkında spesifik ayrıntı sağlar.
Ayrıntılar | |||||
---|---|---|---|---|---|
parametreler |
|
OnConnectCompleteFunct
void(* OnConnectCompleteFunct)(TCPEndPoint *endPoint, INET_ERROR err)
Bağlantı kurma olay işleme işlevi türü.
Bu türde bir işlev sağlayın OnConnectComplete
üzerinde bağlantı kurulması olaylarını işlemek için temsilci üyesi endPoint
. err
argüman hatalarından başarılı bağlantıları ayırır.
Ayrıntılar | |||||
---|---|---|---|---|---|
parametreler |
|
OnConnectionClosedFunct
void(* OnConnectionClosedFunct)(TCPEndPoint *endPoint, INET_ERROR err)
Bağlantı kurma olay işleme işlevi türü.
Bu türde bir işlev sağlayın OnConnectionClosed
üzerinde işlem bağlantı sonlandırma olaylara temsilci üyesi endPoint
. err
argüman hatalarından başarılı uçları ayırır.
Ayrıntılar | |||||
---|---|---|---|---|---|
parametreler |
|
OnConnectionAlınanİşlev
void(* OnConnectionReceivedFunct)(TCPEndPoint *listeningEndPoint, TCPEndPoint *conEndPoint, const IPAddress &peerAddr, uint16_t peerPort)
Bağlantı türü alınan olay işleme işlevi.
Bu türde bir işlev sağlayın OnConnectionReceived
üzerinde işlem bağlantısı resepsiyon olaylara temsilci üyesi listeningEndPoint
. Yeni alınan son nokta conEndPoint
IP adresi bulunur peerAddr
ve TCP portu peerPort
.
Ayrıntılar | |||||||||
---|---|---|---|---|---|---|---|---|---|
parametreler |
|
OnDataReceivedFunct
void(* OnDataReceivedFunct)(TCPEndPoint *endPoint, Weave::System::PacketBuffer *data)
Veri alma olayı işleme işlevinin türü.
Bu türde bir işlev sağlayın OnDataReceived
üzerinde işlem veri alış olaylara temsilci üyesi endPoint
data
alınan mesaj metindir.
Ayrıntılar | |||||
---|---|---|---|---|---|
parametreler |
|
Bir veri alımı olay işleyicisi kullanarak işlenmiş verileri kabul etmeli AckReceive
yöntemi. Free
sürece veri tamponunu yöntem de çağrılması gerekir PutBackReceivedData
yerine kullanılır.
OnDataSentFunct
void(* OnDataSentFunct)(TCPEndPoint *endPoint, uint16_t len)
Veri iletimi olay işleme işlevinin türü.
Bu tür bir işlev sağlamak OnDataSent
proses veri iletim olayları için temsilci elemanının endPoint
len
temel ağ yığını ile göndermek için uygun olan bir TCP iletim penceresi ilave mesaj metni uzunluğudur.
Ayrıntılar | |||||
---|---|---|---|---|---|
parametreler |
|
OnPeerCloseFunct
void(* OnPeerCloseFunct)(TCPEndPoint *endPoint)
Yarı kapalı alım olay işleme işlevinin türü.
Bu türde bir işlev sağlayın OnPeerClose
üzerinde bağlantı sonlandırma olayları işlemek için temsilci üyesi endPoint
.
Ayrıntılar | |||
---|---|---|---|
parametreler |
|
OnTCPSendIdleChangedFunct
void(* OnTCPSendIdleChangedFunct)(TCPEndPoint *endPoint, bool isIdle)
TCP SendIdle tipi değişti sinyal işleme işlevi.
Bu türde bir işlev sağlayın OnTCPSendIdleChanged
ait gönderme kanalının olayı işlemek için temsilci üyesi TCPEndPoint boşta ve atıl olmakla olmamak arasındaki durumunu değiştirir.
Ayrıntılar | |||||
---|---|---|---|---|---|
parametreler |
|
Genel özellikler
OnAcceptError
OnAcceptErrorFunct OnAcceptError
Uç noktanın bağlantı kabul olayı işleme işlevi temsilcisi.
OnConnectTamamlandı
OnConnectCompleteFunct OnConnectComplete
Uç noktanın bağlantı kurma olay işleme işlevi temsilcisi.
OnConnectionKapalı
OnConnectionClosedFunct OnConnectionClosed
Uç noktanın yakın olay işleme işlevi temsilcisi.
Bağlantı Alındığında
OnConnectionReceivedFunct OnConnectionReceived
Uç noktanın bağlantısı, olay işleme işlevi temsilcisini alır.
OnDataAlındı
OnDataReceivedFunct OnDataReceived
Uç noktanın mesaj metni alımı olay işleme işlevi temsilcisi.
OnDataSent
OnDataSentFunct OnDataSent
Uç noktanın mesaj metni iletimi olay işleme işlevi temsilcisi.
OnPeerClose
OnPeerCloseFunct OnPeerClose
Uç noktanın yarı kapalı alma olayı işleme işlevi temsilcisi.
OnTCPSendIdleChanged
OnTCPSendIdleChangedFunct OnTCPSendIdleChanged
TCP bağlantısının gönderme kanalının boşta kalma durumu değiştiğinde uç nokta sinyalinin olay işleme işlevi temsilcisi.
Bu, gönderilen verilerin eşe güvenilir bir şekilde teslim edilip edilmediğine bağlı olarak uygun eylemleri gerçekleştirmek için üst katmanlar tarafından kullanılır.
Alma Etkin
bool ReceiveEnabled
Uygulamanın veri alıp almadığını gösteren kontrol anahtarı.
Durum
enum nl::Inet::TCPEndPoint::@10 State
Temel alınan uç noktanın temel dinamik durumu.
Nesneler "hazır" durumda başlatılır, TCP aktarım durumu makinesinin durumlarının basitleştirilmesine karşılık gelen sonraki durumlara ilerler.
Not: kBasisState_Closed
devlet numaralandırma eşleştirilir kState_Ready
tarihsel ikili uyumluluk nedenlerle. Varolan kState_Closed
ayrı daha önce varolan "henüz açılmamış" ve "daha önce şimdi kapalı açılan" arasındaki ayrımı belirlemek için var kState_Ready
ve kState_Closed
devletler.
Kamu işlevleri
iptal
void Abort( void )
Diğer bir deyişle, uç noktayı başarısız bir şekilde kapatın, RST paketleri gönderin.
AckReceive
INET_ERROR AckReceive( uint16_t len )
Mesaj metninin alındığını onaylayın.
Alınan verilerin tamamının veya bir kısmının alındığını onaylamak için bu yöntemi kullanın. Eğer çalışma semantik tanımlanmamıştır len
toplam üstün onaylanmamış alınan verilerin daha büyüktür.
Ayrıntılar | |||||||
---|---|---|---|---|---|---|---|
parametreler |
| ||||||
Dönüş Değerleri |
|
bağla
INET_ERROR Bind( IPAddressType addrType, IPAddress addr, uint16_t port, bool reuseAddr )
Uç noktayı bir arabirim IP adresine bağlayın.
Uç noktayı belirtilen ağ arabirimi IP adresine bağlar.
Ayrıntılar | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
parametreler |
| ||||||||||||
Dönüş Değerleri |
|
LwIP'de, bu yöntem, önceden alınmış LwIP yığın kilidi ile çağrılmamalıdır.
Kapat
INET_ERROR Close( void )
Diğer bir deyişle, hem gönderme hem de alma ile biten TCP'yi tamamen kapatın.
Ayrıntılar | |||||||
---|---|---|---|---|---|---|---|
Dönüş Değerleri |
|
Bağlan
INET_ERROR Connect( IPAddress addr, uint16_t port, InterfaceId intf )
Bir TCP bağlantısı başlatın.
If possible, then this method initiates a TCP connection to the destination \c addr (with \c intf used as the scope identifier for IPv6 link-local destinations) and \c port.
Ayrıntılar | |||||||||
---|---|---|---|---|---|---|---|---|---|
parametreler |
| ||||||||
Dönüş Değerleri |
|
Devre Dışı BırakCanlı Tut
INET_ERROR DisableKeepAlive( void )
TCP "canlı tut" seçeneğini devre dışı bırakın.
TCPEndPoint :: DisableKeepAlive .
İlişkili TCP bağlantısında TCP canlı tutma araştırmalarını devre dışı bırakın.
Ayrıntılar | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Dönüş Değerleri |
|
Not: nokta bağlantılı durumlardan birinde olduğunda, bu yöntem, yalnızca çağrılabilir. Uç noktada canlı tutma etkinleştirilmemişse bu yöntem hiçbir şey yapmaz.
Devre Dışı Al
void DisableReceive( void )
Alımı devre dışı bırakın.
Tüm olay işleyicilerini devre dışı bırakın. Alımı devre dışı bırakan bir uç noktaya gönderilen veriler, alma penceresi tükenene kadar onaylanacaktır.
Canlı Tutmayı Etkinleştir
INET_ERROR EnableKeepAlive( uint16_t interval, uint16_t timeoutCount )
TCP "canlı tut" seçeneğini etkinleştirin.
TCPEndPoint :: EnableKeepAlive .
Her TCP ileten "canlı tutma" prob segmentler otomatik başlat interval
saniye. Bağlantı olumsuz bir yanıt alındıktan sonra ya da gönderdikten sonra otomatik olarak duracaktır timeoutCount
olumlu yanıt almadan prob segmentleri.
Ayrıntılar | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
parametreler |
| ||||||||||
Dönüş Değerleri |
|
Spesifikasyon ayrıntıları için RFC 1122, bölüm 4.2.3.6'ya bakın.
İlişkili TCP bağlantısında TCP canlı tutma araştırmalarını etkinleştirin.
Not: nokta bağlantılı durumlardan birinde olduğunda, bu yöntem, yalnızca çağrılabilir. Canlı tutma aralığını veya zaman aşımı sayısını ayarlamak için bu yöntem birden çok kez çağrılabilir.
Ayrıntılar | |||||
---|---|---|---|---|---|
parametreler |
|
EtkinleştirNoDelay
INET_ERROR EnableNoDelay( void )
EnableNoDelay.
TCPEndPoint :: EnableNoDelay .
TCP_NODELAY yuva seçeneklerini ayarlayarak TCP'deki arabelleğe alma algoritmasını kapatın.
EtkinleştirAl
void EnableReceive( void )
Alımı etkinleştirin.
Tüm olay işleyicilerini etkinleştirin. Alımı devre dışı bırakan bir uç noktaya gönderilen veriler, alma penceresi tükenene kadar onaylanacaktır.
Bedava
void Free( void )
Hataları yok sayarak TCP'yi tamamen kapatın (veya devam edin).
Nesne ücretsiz havuza döndürülür ve kalan tüm kullanıcı referansları daha sonra geçersiz olur.
GetLocalInfo
INET_ERROR GetLocalInfo( IPAddress *retAddr, uint16_t *retPort )
Yerel uç noktanın IP adresini ve TCP bağlantı noktasını çıkarın.
Kullanmayın NULL
ya argüman için işaretçi değerlerini.
Ayrıntılar | |||||||
---|---|---|---|---|---|---|---|
parametreler |
| ||||||
Dönüş Değerleri |
|
GetPeerInfo
INET_ERROR GetPeerInfo( IPAddress *retAddr, uint16_t *retPort ) const
Uzak uç noktanın IP adresini ve TCP bağlantı noktasını çıkarın.
Kullanmayın NULL
ya argüman için işaretçi değerlerini.
Ayrıntılar | |||||||
---|---|---|---|---|---|---|---|
parametreler |
| ||||||
Dönüş Değerleri |
|
Bağlandı
bool IsConnected( void ) const
TCP bağlantısının kurulup kurulmadığını çıkarın.
Dinle
INET_ERROR Listen( uint16_t backlog )
TCP mesajlarını almak için uç noktayı hazırlayın.
Eğer State
zaten kState_Listening
, o zaman hiçbir işlemi yapılırken, aksi State
olarak ayarlanır kState_Listening
ve uç nokta platformunun semantik göre, alınan TCP mesajlara hazırlanır.
Ayrıntılar | |||||
---|---|---|---|---|---|
parametreler |
| ||||
Dönüş Değerleri |
|
Bazı platformlarda backlog
argüman kullanılmaz (kuyruğun derinliği sabittir; bir bağlantı bir anda kabul edilebilir).
LwIP sistemlerinde, bu yöntem önceden alınmış LwIP yığın kilidi ile çağrılmamalıdır.
LogId
uint16_t LogId( void )
Uç nokta için bir tanımlayıcı edinin.
Ayrıntılar | |
---|---|
İadeler | Kullanım günlükleri için opak bir benzersiz tanımlayıcı döndürür. |
İşaretleAktif
void MarkActive( void )
Aktiviteyi not edin, başka bir deyişle, boşta kalma zamanlayıcısını sıfırlayın.
Boşta kalma zamanlayıcısını sıfırlayın.
BeklemedeAlma Uzunluğu
uint32_t PendingReceiveLength( void )
Onaylanmayan alma verilerinin uzunluğunu çıkarın.
Ayrıntılar | |
---|---|
İadeler | Henüz ile kabul edilmemiştir kuyruğunu almak bayt sayısı AckReceive(uint16_t len) . |
BeklemedeSendLength
uint32_t PendingSendLength( void )
İlk iletimi bekleyen verilerin uzunluğunu çıkarın.
Ayrıntılar | |
---|---|
İadeler | İletim kuyruğundaki iletilmeyen bayt sayısı. |
PutBackAlınan Veriler
INET_ERROR PutBackReceivedData( Weave::System::PacketBuffer *data )
Mesaj metnini alma kuyruğunun başına geri itin.
Bu yöntem, yalnızca veri alma olay işleyicileri tarafından, onaylanmayan bir veri bölümünü alma kuyruğuna geri koymak için çağrılabilir. Arayan veri alımı olay işleyicisi kapsamı dışında ise operasyonel semantik, tanımsız olan data
değil Weave::System::PacketBuffer
işleyicisi sağlanan veya data
a tarafından kabul bayt sonra kalan onaylanmamış kısmını içermiyor önce çağrı AckReceive(uint16_t len)
yöntemi.
Ayrıntılar | |||||
---|---|---|---|---|---|
parametreler |
| ||||
Dönüş Değerleri |
|
gönder
INET_ERROR Send( Weave::System::PacketBuffer *data, bool push )
TCP bağlantısında mesaj metni gönderin.
Weave::System::PacketBuffer::Free
yöntemi çağrıldığında data
bakılmaksızın iletim başarılı veya başarısız olup olmadığı argümanı.
Ayrıntılar | |||||
---|---|---|---|---|---|
parametreler |
| ||||
Dönüş Değerleri |
|
Bağlantı Zaman Aşımı Ayarla
void SetConnectTimeout( const uint32_t connTimeoutMsecs )
Connect'in başarılı olması veya bir hata döndürmesi için zaman aşımını ayarlayın.
Ayrıntılar | |||
---|---|---|---|
parametreler |
|
SetUserTimeout
INET_ERROR SetUserTimeout( uint32_t userTimeoutMillis )
TCP TCP_USER_TIMEOUT soket seçeneğini ayarlayın.
TCPEndPoint :: SetUserTimeout .
Değer 0'dan büyük olduğunda, TCP ilgili bağlantıyı zorla kapatmadan önce iletilen verilerin onaylanmadan kalabileceği maksimum süreyi milisaniye cinsinden belirtir. Seçenek değeri 0 olarak belirtilirse, TCP sistem varsayılanını kullanır. Daha fazla ayrıntı için RFC 5482'ye bakın.
Ayrıntılar | |||||||
---|---|---|---|---|---|---|---|
parametreler |
| ||||||
Dönüş Değerleri |
|
TCP kullanıcı zaman aşımı soketi seçeneğini ayarlayın.
Değer 0'dan büyük olduğunda, TCP ilgili bağlantıyı zorla kapatmadan önce iletilen verilerin onaylanmadan kalabileceği maksimum süreyi milisaniye cinsinden belirtir. Seçenek değeri 0 olarak belirtilirse, TCP sistem varsayılanını kullanır. Daha fazla ayrıntı için RFC 5482'ye bakın.
Not: nokta bağlantılı durumlardan birinde olduğunda, bu yöntem, yalnızca çağrılabilir. Canlı tutma aralığını veya zaman aşımı sayısını ayarlamak için bu yöntem birden çok kez çağrılabilir.
Kapat
INET_ERROR Shutdown( void )
TCP'yi yarı kapalı başlatın, diğer bir deyişle gönderme ile bitti.
Ayrıntılar | |||||||
---|---|---|---|---|---|---|---|
Dönüş Değerleri |
|