![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
UDP通信のサンプルプログラム
Dependencies: EthernetInterface mbed-rtos mbed
Diff: main.cpp
- Revision:
- 0:e0ec056e8895
- Child:
- 1:617727625d66
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Mon Apr 06 14:58:18 2015 +0000 @@ -0,0 +1,73 @@ +/*UDP通信サンプル + 自分:mbedAから相手:mbedBへのデータ送信方法、相手:mbedBから自分:mbedAへのデータ受信方法*/ +#include "mbed.h" +#include "EthernetInterface.h" + +Serial pc(USBTX, USBRX); // tx, rx + +const char* A_ADDRESS = "192.168.1.1"; +const int A_PORT = 1000; + +const char* B_ADDRESS = "192.168.1.2"; +const int B_PORT = 2000; + +int main() { + + char u_packet[2]; + u_packet[0]=0x41; u_packet[1]=0x42; //ex. + char u_buff[10]; + + EthernetInterface eth; + eth.init(A_ADDRESS, "255.255.255.0", ""); // Use hard IP + pc.printf("IP : %s\n", eth.getIPAddress()); + if (eth.connect() < 0) { + pc.printf("Failed to connect\n\r"); + return -1; + } + + UDPSocket sockA; + if (sockA.bind(A_PORT) < 0) { + pc.printf("Failed to bind UDP Socket to PORT : %d\n\r", A_PORT); + return -1; + } + else pc.printf("Bind UDP Socket to PORT : %d\n\r", A_PORT); + sockA.set_blocking(false); + + Endpoint EndpointA; + EndpointA.set_address(A_ADDRESS, A_PORT); + + Endpoint EndpointB; + EndpointB.set_address(B_ADDRESS, B_PORT); + + /*----------- + MAIN ROOP + -----------*/ + while(1) { + /*--send--*/ + pc.printf("Send : %s\n", u_packet); + int n_send=sockA.sendTo(EndpointB, (char*)u_packet, sizeof(u_packet)); + wait_ms(1); + + if(n_send < 0){ + pc.printf("Send unsuccessfully\n"); + return 0; + } + else pc.printf("Sent %d bytes Successfully!\n",n_send); + /*-receive--*/ + int n_receive=sockA.receiveFrom(EndpointB, (char*)u_buff, sizeof(u_buff)); + wait_ms(1); + + if(n_receive < 0){ + pc.printf("Receive unsuccessfully\n"); + return 0; + } + else { + pc.printf("Received %d byte Successfully! %s\n",n_receive); + pc.printf("Received : %s\n",u_buff); + } + } + + sockA.close(false); + eth.disconnect(); + return 0; +} \ No newline at end of file