Mbed OSドキュメント翻訳の参考(API(SocketAddress))

3140 ワード

SocketAddress
SocketAddressクラスを使用して、唯一のネットワーク・エンド・ポイントのIPアドレスとポート・ペアを表します.ほとんどのネットワーク関数は、IPアドレスの文字列表示を受け入れるためにリロードされますが、SocketAddressを使用すると、重複するネットワークトランザクション中にIPアドレスを解析するオーバーヘッドを回避し、最初のオブジェクトとして渡すことができます.
SocketAddressクラスリファレンス
SocketAddressクラスリファレンス
共通メンバー関数
template
 
SocketAddress (S *stack, const char *host, uint16_t port=0)
 
SocketAddress (nsapi_addr_t addr=nsapi_addr_t(), uint16_t port=0)
 
SocketAddress (const char *addr, uint16_t port=0)
 
SocketAddress (const void *bytes, nsapi_version_t version, uint16_t port=0)
 
SocketAddress (const SocketAddress &addr)
 
~SocketAddress ()
bool 
set_ip_address (const char *addr)
void 
set_ip_bytes (const void *bytes, nsapi_version_t version)
void 
set_addr (nsapi_addr_t addr)
void 
set_port (uint16_t port)
const char * 
get_ip_address () const
const void * 
get_ip_bytes () const
nsapi_version_t 
get_ip_version () const
nsapi_addr_t 
get_addr () const
uint16_t 
get_port () const
 
operator bool () const
SocketAddress & 
operator= (const SocketAddress &addr)
友元
bool 
operator== (const SocketAddress &a, const SocketAddress &b)
bool 
operator!= (const SocketAddress &a, const SocketAddress &b)
SocketAddressの例
次に、現在のUTC時間を読み出す例を示します.この例では、SocketAddressクラスを使用してサーバのIPアドレスとポートを取得します.
main.cppをMbed IDEにインポート
#include "mbed.h"
#include "EthernetInterface.h"
 
// Network interface
EthernetInterface net;
 
// Time protocol implementation : Address: time.nist.gov UDPPort: 37  
 
typedef struct {
    uint32_t secs;         // Transmit Time-stamp seconds.
}ntp_packet;
 
int main() {
    // Bring up the ethernet interface
    printf("UDP Socket example
"); if(0 != net.connect()) { printf("Error connecting
"); return -1; } // Show the network address const char *ip = net.get_ip_address(); printf("IP address is: %s
", ip ? ip : "No IP"); UDPSocket sock(&net); SocketAddress sockAddr; char out_buffer[] = "time"; if(0 > sock.sendto("time.nist.gov", 37, out_buffer, sizeof(out_buffer))) { printf("Error sending data
"); return -1; } ntp_packet in_data; int n = sock.recvfrom(&sockAddr, &in_data, sizeof(ntp_packet)); in_data.secs = ntohl( in_data.secs ) - 2208988800; // 1900-1970 printf("Time Received %lu seconds since 1/01/1900 00:00 GMT
", (uint32_t)in_data.secs); printf("Time = %s", ctime(( const time_t* )&in_data.secs)); printf("Time Server Address: %s Port: %d
\r", sockAddr.get_ip_address(), sockAddr.get_port()); // Close the socket and bring down the network interface sock.close(); net.disconnect(); return 0; }

関連コンテンツ
  • IPネットワークアーキテクチャ.