Jan Kamidra
/
UDP_Echo
UDP echo with thread
main.cpp
- Committer:
- JohnnyK
- Date:
- 2019-07-03
- Revision:
- 2:01b03970605d
- Parent:
- 1:9c712ebb90d3
- Child:
- 3:9ab431fc54e2
File content as of revision 2:01b03970605d:
#include "mbed.h" //MbedOS 5.13 #include "EthernetInterface.h" #define ADDRESS "192.168.1.10" //Here place IP of your PC. Run cmd.exe and write command ipconfig #define LOCALPORT 20 #define REMOTEPORT 2000 #define ROUTER #ifndef ROUTER #define IP "192.168.1.1" #define GATEWAY "0.0.0.0" #define MASK "255.255.255.0" #endif Thread thread; DigitalOut led1(LED1); DigitalOut led2(LED2); void udpEcho(){ EthernetInterface eth; UDPSocket sock; SocketAddress addr(0,LOCALPORT); 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); const char *ip = eth.get_ip_address(); const char *mac = eth.get_mac_address(); printf("MAC address is: %s\n", mac ? mac : "No MAC"); printf("IP address is: %s\n", ip ? ip : "No IP"); // Check ip if(ip){// Check ip 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 server"; printf("Sending message '%s' to server (%s)\n",buffer,ip); sock.sendto(ADDRESS, REMOTEPORT, 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(addr.get_ip_address(), REMOTEPORT, out_buffer, sizeof(out_buffer)); printf("IP address is: %s\n", addr.get_ip_address()); led2 =! led2; } /*sock.close(); eth.disconnect(); */ }else{ printf("No IP\n"); //eth.disconnect(); printf("Thread end\n"); } } int main() { printf("UDP echo starting...\n"); thread.start(callback(udpEcho)); wait(1); while(1) { led1 =! led1; wait(1); } }