Mbed OS 文档翻译 之 参考(API(网络接口(Ethernet)))

Ethernet

                                                            

                                                                                 EthInterface 类层次结构

EthInterface 提供了一个 C++ API,用于通过以太网连接到互联网。默认情况下,此类不需要任何配置。它能够为目标选择默认的以太网驱动程序并选择正确的网络栈。

用法

要静态初始化驱动程序,请创建一个对象而不传递任何参数:

EthernetInterface eth;

然后,如果默认配置足够,请调出界面:

nsapi_error_t status = eth.connect();

现在,该接口已准备好用于网络套接字

// Open a TCP socket
TCPSocket socket;
socket.open(&eth);

// Open a UDP socket
UDPSocket socket;
socket.open(&eth);

配置

对于 EthernetInterface,有两种可能的配置:

  • 使用 DHCP 进行网络寻址。这是默认值。
  • 使用静态配置的 IP 地址。

有关如何通过调用 set_network() 函数来设置 IP 地址,请参阅下面的 API。

故障排除信息

网络接口连接失败原因:

  • NSAPI_ERROR_NO_CONNECTION 表示以太网链路出现故障。检查以太网连接是否正常。
  • NSAPI_ERROR_DHCP_FAILURE 表示获取 IP 地址失败。检查 IP 地址配置服务是否正常。

EthInterface 类参考

EthInterface 类参考

公共成员函数
virtual EthInterface ethInterface ()
 公共成员函数继承自 NetworkInterface
virtual const char *  get_mac_address ()
virtual const char *  get_ip_address ()
virtual const char *  get_netmask ()
virtual const char *  get_gateway ()
virtual nsapi_error_t  set_network (const char *ip_address, const char *netmask, const char *gateway)
virtual nsapi_error_t  set_dhcp (bool dhcp)
virtual nsapi_error_t  connect ()=0
virtual nsapi_error_t  disconnect ()=0
virtual nsapi_error_t  gethostbyname (const char *host, SocketAddress *address, nsapi_version_t version=NSAPI_UNSPEC)
virtual nsapi_value_or_error_t  gethostbyname_async (const char *host, hostbyname_cb_t callback, nsapi_version_t version=NSAPI_UNSPEC)
virtual nsapi_error_t  gethostbyname_async_cancel (int id)
virtual nsapi_error_t  add_dns_server (const SocketAddress &address)
virtual void  attach (mbed::Callback< void(nsapi_event_t, intptr_t)> status_cb)
virtual nsapi_connection_status_t  get_connection_status () const
virtual nsapi_error_t  set_blocking (bool blocking)
virtual WiFiInterface wifiInterface ()
virtual MeshInterface meshInterface ()
virtual CellularBase cellularBase ()
virtual EMACInterface emacInterface ()
静态公共成员函数
static EthInterface get_default_instance ()
 静态公共成员函数继承自 NetworkInterface
static NetworkInterface get_default_instance ()
静态保护的成员函数
static EthInterface get_target_default_instance ()
 静态保护的成员函数继承自 NetworkInterface
static NetworkInterface get_target_default_instance ()
其他继承成员
 继承自的公共类型 NetworkInterface
typedef mbed::Callback< void(nsapi_error_t result, SocketAddress *address)>  hostbyname_cb_t
 继承自的公共类型 DNS
typedef mbed::Callback< void(nsapi_error_t result, SocketAddress *address)>  hostbyname_cb_t
 受保护的成员函数继承自 NetworkInterface
virtual NetworkStack get_stack ()=0

EthInterface 示例

以下是 HTTP 客户端程序的示例。该程序将以太网作为底层网络接口,并使用它来通过 TCPSocket 执行 HTTP 事务:

main.cpp                                                                                                                                                导入到 Mbed IDE

#include "mbed.h"
#include "EthernetInterface.h"

// Network interface
EthernetInterface net;

// Socket demo
int main() {
    // Bring up the ethernet interface
    printf("Ethernet socket example\n");
    net.connect();

    // Show the network address
    const char *ip = net.get_ip_address();
    printf("IP address is: %s\n", ip ? ip : "No IP");

    // Open a socket on the network interface, and create a TCP connection to mbed.org
    TCPSocket socket;
    socket.open(&net);
    socket.connect("developer.mbed.org", 80);

    // Send a simple http request
    char sbuffer[] = "GET / HTTP/1.1\r\nHost: developer.mbed.org\r\n\r\n";
    int scount = socket.send(sbuffer, sizeof sbuffer);
    printf("sent %d [%.*s]\n", scount, strstr(sbuffer, "\r\n")-sbuffer, sbuffer);

    // Recieve a simple http response and print out the response line
    char rbuffer[64];
    int rcount = socket.recv(rbuffer, sizeof rbuffer);
    printf("recv %d [%.*s]\n", rcount, strstr(rbuffer, "\r\n")-rbuffer, rbuffer);

    // Close the socket to return its memory and bring down the network interface
    socket.close();

    // Bring down the ethernet interface
    net.disconnect();
    printf("Done\n");
}

猜你喜欢

转载自blog.csdn.net/u012325601/article/details/82018604