Jan Kamidra
/
UDP_Echo
UDP echo with thread
main.cpp
- Committer:
- JohnnyK
- Date:
- 2020-05-08
- Revision:
- 3:9ab431fc54e2
- Parent:
- 2:01b03970605d
- Child:
- 4:2579ef3b025f
File content as of revision 3:9ab431fc54e2:
#include "mbed.h" //MbedOS 5.15 #include "EthernetInterface.h" #define ROUTER #ifndef ROUTER #define IP "192.168.1.1" //Here place your defined IP of Mbed #define GATEWAY "0.0.0.0" #define MASK "255.255.255.0" #endif #define ADDRESS "10.0.1.29" //Here place IP of your PC. Run cmd.exe and write command ipconfig #define LOCALPORT 20 #define REMOTEPORT 2000 Thread thread; DigitalOut led1(LED1); DigitalOut led2(LED2); SocketAddress targetAddr(ADDRESS,REMOTEPORT); void udpEcho(){ EthernetInterface eth; int eth_stat; #ifndef ROUTER eth.disconnect(); eth_stat = eth.set_network(IP,MASK,GATEWAY); printf("set IP status: %i\n",eth_stat); #endif eth_stat = eth.connect(); printf("connect status: %i\n",eth_stat); SocketAddress ip; eth.get_ip_address(&ip); const char *p_ip = ip.get_ip_address(); printf("IP address: %s\n", p_ip ? p_ip : "None"); SocketAddress mask; eth.get_netmask(&mask); const char *p_mask = mask.get_ip_address(); printf("Netmask: %s\n", p_mask ? p_mask : "None"); SocketAddress gateway; eth.get_gateway(&gateway); const char *p_gateway = gateway.get_ip_address(); printf("Gateway: %s\n", p_gateway ? p_gateway : "None"); // Check ip if(ip){// Check ip UDPSocket sock; SocketAddress addr; sock.open(ð); sock.bind(LOCALPORT); printf("Listen on local port: %d and send to remote port %d\n", LOCALPORT, REMOTEPORT); char buffer[] = "Hello World, UDP Echo"; printf("Sending message '%s' to (%s)\n",buffer,targetAddr.get_ip_address()); sock.sendto(targetAddr, buffer, sizeof(buffer)); printf("Waiting for message...\n"); while(1) { char in_buffer[80]; int n = sock.recvfrom(&addr, &in_buffer, sizeof(in_buffer)); in_buffer[n] = '\0'; printf("Recieved: %s\n", in_buffer); char out_buffer[80]; n = sprintf(out_buffer,"Echo - %s", in_buffer); out_buffer[n] = '\0'; printf("Send back: %s\n", out_buffer); sock.sendto(targetAddr, out_buffer, sizeof(out_buffer)); led2 =! led2; } }else{ printf("No IP\n"); //eth.disconnect(); printf("Thread end\n"); } } int main() { printf("UDP echo starting...\n"); thread.start(callback(udpEcho)); ThisThread::sleep_for(1000); while(1) { led1 =! led1; ThisThread::sleep_for(1000); } }