A fork of the original interface for OS/2. Features a correctly-implemented recv (but retains the old behavior via recv2).
Dependents: weather_clock weather_clock
Diff: Socket/UDPSocket.cpp
- Revision:
- 13:41098c907200
- Parent:
- 12:c5f0eac67a8a
- Child:
- 16:3f0efaa57a12
diff -r c5f0eac67a8a -r 41098c907200 Socket/UDPSocket.cpp --- a/Socket/UDPSocket.cpp Wed Oct 08 19:57:58 2014 +0000 +++ b/Socket/UDPSocket.cpp Sun Nov 30 21:14:09 2014 +0000 @@ -31,44 +31,12 @@ int UDPSocket::init(void) { - wifi->setProtocol(UDP); - wifi->exit(); return 0; } // Server initialization int UDPSocket::bind(int port) { - char cmd[17]; - - // set local port - sprintf(cmd, "set i l %d\n\r", port); - if (!wifi->sendCommand(cmd, "AOK")){ - pc.printf("bind to port failed\r\n"); - return -1;} - - // save - //if (!wifi->sendCommand("save\n\r", "Stor")) - //return -1; - - // reboot - //wifi->reboot(); - - // set udp protocol - //wifi->setProtocol(UDP); - /* - // connect the network - if (wifi->isDHCP()) { - if (!wifi->sendCommand("join\n\r", "DHCP=ON", NULL, 10000)) - return -1; - } else { - if (!wifi->sendCommand("join\n\r", "Associated", NULL, 10000)) - return -1; - } - */ - // exit - wifi->exit(); - wifi->flush(); return 0; } @@ -133,57 +101,10 @@ bool UDPSocket::confEndpoint(Endpoint & ep) { - char * host; - char cmd[30]; - if (!endpoint_configured) { - host = ep.get_address(); - if (host[0] != '\0') { - // set host - sprintf(cmd, "set i h %s\r\n", host); - if (!wifi->sendCommand(cmd, "AOK")) - return false; - - // set remote port - sprintf(cmd, "set i r %d\r\n", ep.get_port()); - if (!wifi->sendCommand(cmd, "AOK")) - return false; - - wifi->exit(); - endpoint_configured = true; - return true; - } - } return true; } bool UDPSocket::readEndpoint(Endpoint & ep) { - char recv[256]; - int begin = 0; - int end = 0; - string str; - string addr; - int port; - if (!endpoint_read) { - if (!wifi->sendCommand("get ip\r\n", NULL, recv)) - return false; - wifi->exit(); - str = recv; - begin = str.find("HOST="); - end = str.find("PROTO="); - if (begin != string::npos && end != string::npos) { - str = str.substr(begin + 5, end - begin - 5); - int pos = str.find(":"); - if (pos != string::npos) { - addr = str.substr(0, pos); - port = atoi(str.substr(pos + 1).c_str()); - ep.set_address(addr.c_str(), port); - endpoint_read = true; - wifi->flush(); - return true; - } - } - wifi->flush(); - } return false; }