Important changes to forums and questions
All forums and questions are now archived. To start a new conversation or read the latest updates go to forums.mbed.com.
8 years, 2 months ago.
EthernetInterface MBED-OS 5.6 static IP
Error -3004 is occured when I'm trying to establish socket connection. Board NUCLEO F767ZI. Please, help me^.^
include the mbed library with this snippet
#include "mbed.h"
#include "TCPSocket.h"
#include "EthernetInterface.h"
EthernetInterface eth;
TCPSocket socket;
#define IP "192.168.1.177"
#define GATEWAY "192.168.1.1"
#define MASK "255.255.255.0"
int main()
{
printf("Example network-socket TCP Server\r\n");
eth.disconnect();
int i=eth.set_network(IP,MASK,GATEWAY);
printf("set IP status: %i \r\n",i);
i=eth.connect();
printf("connect status: %i \r\n",i);
const char *ip = eth.get_ip_address();
const char *mac = eth.get_mac_address();
printf("IP address is: %s\n\r", ip ? ip : "No IP");
printf("MAC address is: %s\n\r", mac ? mac : "No MAC");
while(true) {
socket.close();
socket.open(ð);
socket.connect("93.175.29.245", 80);
char sbuffer[] = "GET /checkPin.php?\r\n";
int scount = socket.send(sbuffer, sizeof sbuffer);
char rbuffer[64];
int rcount = socket.recv(rbuffer, sizeof rbuffer);
printf("recv %d [%.*s]\r\n", rcount, strstr(rbuffer, "\r\n")-rbuffer, rbuffer);
}
}
If I'm using dhcp, it works, but sometimes it can't get ip address and returns -3009.
2 Answers
7 years, 3 months ago.
I am here by searching the same problem solution, Error -3004 has occurred when I'm trying to establish a socket connection. I got here the absolute solution from Hudak. Thanks Hudak. Check out VOIP Cloud-Based Business Phone Service at http://www.cebodtelecom.com/
8 years, 2 months ago.
Hello Vladimir,
Static IP worked for me in this demo with MBED OS 5.6.1 after including (uncommenting) line #221 as below:
ethernet.set_network("192.168.1.181","255.255.255.0","192.168.1.1"); // use static IP address, netmask, gateway
To make it work in your application, try to remove (or comment out) line #15:
...
//eth.disconnect();
...
Thank you, your example works, but as a dhcp server. I need client (dhcp or static). Removing line #15 does not change anything.
posted by 11 Oct 2017That's strange. Below is what I could see on my PC's serial terminal when running your snippet on my NUCLEO-767ZI board
- with
eth.disconnect();included:
[00]Example network-socket TCP Server set IP status: 0 connect status: 0 IP address is: 192.168.1.177 MAC address is: 00:80:e1:38:00:25 recv -3004 [`[0E]] recv -3004 [`[0E]]
- after removing
eth.disconnect();:
[00]Example network-socket TCP Server set IP status: 0 connect status: 0 IP address is: 192.168.1.177 MAC address is: 00:80:e1:38:00:25 recv 1 [N[0E]] recv 1 [N[0E]] ...
- and when using DHCP to assign an IP address with a code modified as below:
...
int main()
{
printf("Example network-socket TCP Server\r\n");
//eth.disconnect();
//int i=eth.set_network(IP,MASK,GATEWAY);
//printf("set IP status: %i \r\n",i);
int i=eth.connect();
...
Example network-socket TCP Server connect status: 0 IP address is: 192.168.1.54 MAC address is: 00:80:e1:38:00:25 recv 1 [N[0E]] recv 1 [N[0E]] ...posted by 11 Oct 2017