Skip to content

Commit 0124020

Browse files
committed
Add support for connecting to IPAddress
1 parent 20aa4fd commit 0124020

File tree

3 files changed

+19
-16
lines changed

3 files changed

+19
-16
lines changed

libraries/WiFi/src/WiFi.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -290,6 +290,7 @@ class WiFiClass
290290

291291
friend class WiFiClient;
292292
friend class WiFiServer;
293+
friend class WiFiUDP;
293294

294295
NetworkInterface *getNetwork();
295296

libraries/WiFi/src/WiFiClient.cpp

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -24,26 +24,27 @@ void arduino::WiFiClient::getStatus() {
2424
}
2525
}
2626

27-
28-
int arduino::WiFiClient::connect(IPAddress ip, uint16_t port) {
29-
}
30-
31-
int arduino::WiFiClient::connect(const char *host, uint16_t port) {
27+
int arduino::WiFiClient::connect(SocketAddress socketAddress) {
3228
if (sock == NULL) {
33-
sock = new TCPSocket();
34-
((TCPSocket*)sock)->open(WiFi.getNetwork());
29+
sock = new TCPSocket();
30+
static_cast<TCPSocket*>(sock)->open(WiFi.getNetwork());
3531
}
3632
//sock->sigio(mbed::callback(this, &WiFiClient::getStatus));
3733
//sock->set_blocking(false);
38-
sock->set_timeout(1000);
39-
SocketAddress addr(host, port);
40-
WiFi.getNetwork()->gethostbyname(host, &addr);
41-
int ret = ((TCPSocket*)sock)->connect(addr);
42-
if (ret == 0) {
43-
return 1;
44-
} else {
45-
return 0;
46-
}
34+
sock->set_timeout(1000);
35+
nsapi_error_t returnCode = static_cast<TCPSocket*>(sock)->connect(socketAddress);
36+
return returnCode == NSAPI_ERROR_OK ? 1 : 0;
37+
}
38+
39+
int arduino::WiFiClient::connect(IPAddress ip, uint16_t port) {
40+
return connect(WiFi.socketAddressFromIpAddress(ip, port));
41+
}
42+
43+
int arduino::WiFiClient::connect(const char *host, uint16_t port) {
44+
SocketAddress socketAddress = SocketAddress();
45+
socketAddress.set_port(port);
46+
WiFi.getNetwork()->gethostbyname(host, &socketAddress);
47+
return connect(socketAddress);
4748
}
4849

4950
int arduino::WiFiClient::connectSSL(IPAddress ip, uint16_t port) {

libraries/WiFi/src/WiFiClient.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ class WiFiClient : public arduino::Client {
3535
WiFiClient();
3636

3737
uint8_t status();
38+
int connect(SocketAddress socketAddress);
3839
int connect(IPAddress ip, uint16_t port);
3940
int connect(const char *host, uint16_t port);
4041
int connectSSL(IPAddress ip, uint16_t port);

0 commit comments

Comments
 (0)