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 EthInterfaceethInterface ()
 公共成员函数继承自 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 WiFiInterfacewifiInterface ()
virtual MeshInterfacemeshInterface ()
virtual CellularBasecellularBase ()
virtual EMACInterfaceemacInterface ()
静态公共成员函数
static EthInterfaceget_default_instance ()
 静态公共成员函数继承自 NetworkInterface
static NetworkInterfaceget_default_instance ()
静态保护的成员函数
static EthInterfaceget_target_default_instance ()
 静态保护的成员函数继承自 NetworkInterface
static NetworkInterfaceget_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 NetworkStackget_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");
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值