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.
9 years ago.
What does no suitable conversion function from "SocketAddress" to "SocketAddress" mean ?
Hi everyone ! I'm trying to make a UDP server and not knowing how to make one I decided to test it with an echo server, I found an example here: https://developer.mbed.org/teams/mbed/code/UDPEchoServer/ but the library wasn't compatible with my hardware (Nucleo-f429zi) so I tried it with the ethernetinterface in mbed-so.lib and it seems to be compatible, but every time I try to compile I get the same error with the recvfrom() function Error: No suitable conversion function from "SocketAddress" to "SocketAddress *" exists in "int n = server.recvfrom(client, buffer, sizeof(buffer));"
here is the code:
main.cpp
#include "mbed.h"
#include "EthernetInterface.h"
#include "Ethernet.h"
#include "SocketAddress.h"
#include "Socket.h"
#include "UDPSocket.h"
#define ECHO_SERVER_PORT   7
int main (void) {
    EthernetInterface eth;
    eth.connect();
    printf("\nServer IP Address is %s\n", eth.get_ip_address());
    
    UDPSocket server;
    server.bind(ECHO_SERVER_PORT);
    
    SocketAddress client;
    char buffer[256];
    while (true) {
        printf("\nWaiting for UDP packet...\n");
        int n = server.recvfrom(client, buffer, sizeof(buffer));
        buffer[n] = '\0';
        
        printf("Received packet from: %s\n", client.get_ip_address());
        printf("Packet contents : '%s'\n",buffer);
        printf("Sending Packet back to Client\n");
        server.sendto(client, buffer, n);
    }
}
1 Answer
8 years, 12 months ago.
Try passing in the address of the SocketAddress
int n = server.recvfrom(&client,buffer,sizeof(buffer));
The syntax is correct, dont need the & to get the base adress of the pointer... It compiles fine with an lpc4088...
You just only need as #include : "mbed.h" and "EthernetInterface.h"
remove all of others includes between lines #3 to #7. an try it to compil again.
If you need an ethernet interface use an lpc4088 qsb, it works very well.
posted by 01 Nov 2016