NetworkSocketAPI

Dependencies:   DnsQuery

Dependents:   HelloWizFi250Interface

Fork of NetworkSocketAPI by NetworkSocketAPI

Committer:
kaizen
Date:
Tue Aug 30 02:00:24 2016 +0000
Revision:
127:086a648760a3
Parent:
109:5d8bd5752386
Added some delay for waiting to receive response of query.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Christopher Haster 21:35ed15069189 1 /* UDPSocket
Christopher Haster 21:35ed15069189 2 * Copyright (c) 2015 ARM Limited
Christopher Haster 21:35ed15069189 3 *
Christopher Haster 21:35ed15069189 4 * Licensed under the Apache License, Version 2.0 (the "License");
Christopher Haster 21:35ed15069189 5 * you may not use this file except in compliance with the License.
Christopher Haster 21:35ed15069189 6 * You may obtain a copy of the License at
Christopher Haster 21:35ed15069189 7 *
Christopher Haster 21:35ed15069189 8 * http://www.apache.org/licenses/LICENSE-2.0
Christopher Haster 21:35ed15069189 9 *
Christopher Haster 21:35ed15069189 10 * Unless required by applicable law or agreed to in writing, software
Christopher Haster 21:35ed15069189 11 * distributed under the License is distributed on an "AS IS" BASIS,
Christopher Haster 21:35ed15069189 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Christopher Haster 21:35ed15069189 13 * See the License for the specific language governing permissions and
Christopher Haster 21:35ed15069189 14 * limitations under the License.
Christopher Haster 21:35ed15069189 15 */
Christopher Haster 21:35ed15069189 16
Christopher Haster 72:6a8b52ee83ed 17 #ifndef UDPSOCKET_H
Christopher Haster 72:6a8b52ee83ed 18 #define UDPSOCKET_H
Christopher Haster 21:35ed15069189 19
Christopher Haster 25:ed7b2a52e8ac 20 #include "Socket.h"
Christopher Haster 105:2fd212f8da61 21 #include "NetworkStack.h"
Christopher Haster 21:35ed15069189 22
Christopher Haster 103:37decbcb1108 23 /** UDP socket
Christopher Haster 21:35ed15069189 24 */
Christopher Haster 72:6a8b52ee83ed 25 class UDPSocket : public Socket {
Christopher Haster 21:35ed15069189 26 public:
Christopher Haster 103:37decbcb1108 27 /** Create an uninitialized socket
Christopher Haster 103:37decbcb1108 28 *
Christopher Haster 103:37decbcb1108 29 * Must call open to initialize the socket on a network stack.
Christopher Haster 89:b1d417383c0d 30 */
Christopher Haster 90:0a988e4abb72 31 UDPSocket();
Christopher Haster 103:37decbcb1108 32
Christopher Haster 103:37decbcb1108 33 /** Create a socket on a network stack
Christopher Haster 103:37decbcb1108 34 *
Christopher Haster 103:37decbcb1108 35 * Creates and opens a socket on the specified network stack.
Christopher Haster 103:37decbcb1108 36 *
Christopher Haster 103:37decbcb1108 37 * @param iface Network stack as target for socket
Christopher Haster 103:37decbcb1108 38 */
Christopher Haster 105:2fd212f8da61 39 UDPSocket(NetworkStack *iface);
Christopher Haster 90:0a988e4abb72 40
Christopher Haster 103:37decbcb1108 41 /** Opens a socket
Christopher Haster 103:37decbcb1108 42 *
Christopher Haster 103:37decbcb1108 43 * Creates a network socket on the specified network stack.
Christopher Haster 103:37decbcb1108 44 * Not needed if stack is passed to the socket's constructor.
Christopher Haster 103:37decbcb1108 45 *
Christopher Haster 103:37decbcb1108 46 * @param iface Network stack as target for socket
Christopher Haster 103:37decbcb1108 47 * @return 0 on success, negative error code on failure
Christopher Haster 21:35ed15069189 48 */
Christopher Haster 105:2fd212f8da61 49 virtual int open(NetworkStack *iface);
Christopher Haster 96:656011e49d9f 50
Christopher Haster 103:37decbcb1108 51 /** Send a packet over a UDP socket
Christopher Haster 103:37decbcb1108 52 *
Christopher Haster 103:37decbcb1108 53 * Sends data to the specified address specified by either a domain name
Christopher Haster 103:37decbcb1108 54 * or an IP address and port. Returns the number of bytes sent from the
Christopher Haster 103:37decbcb1108 55 * buffer.
Christopher Haster 103:37decbcb1108 56 *
Christopher Haster 103:37decbcb1108 57 * By default, sendto blocks until data is sent. If socket is set to
Christopher Haster 103:37decbcb1108 58 * non-blocking or times out, NSAPI_ERROR_WOULD_BLOCK is returned
Christopher Haster 103:37decbcb1108 59 * immediately.
Christopher Haster 103:37decbcb1108 60 *
Christopher Haster 104:d28d8b508e7c 61 * @param host Hostname of the remote host
Christopher Haster 103:37decbcb1108 62 * @param port Port of the remote host
Christopher Haster 103:37decbcb1108 63 * @param data Buffer of data to send to the host
Christopher Haster 103:37decbcb1108 64 * @param size Size of the buffer in bytes
Christopher Haster 103:37decbcb1108 65 * @return Number of sent bytes on success, negative error
Christopher Haster 103:37decbcb1108 66 * code on failure
Christopher Haster 96:656011e49d9f 67 */
Christopher Haster 96:656011e49d9f 68 int sendto(const char *host, uint16_t port, const void *data, unsigned size);
Christopher Haster 96:656011e49d9f 69
Christopher Haster 103:37decbcb1108 70 /** Send a packet over a UDP socket
Christopher Haster 103:37decbcb1108 71 *
Christopher Haster 103:37decbcb1108 72 * Sends data to the specified address. Returns the number of bytes
Christopher Haster 103:37decbcb1108 73 * sent from the buffer.
Christopher Haster 103:37decbcb1108 74 *
Christopher Haster 103:37decbcb1108 75 * By default, sendto blocks until data is sent. If socket is set to
Christopher Haster 103:37decbcb1108 76 * non-blocking or times out, NSAPI_ERROR_WOULD_BLOCK is returned
Christopher Haster 103:37decbcb1108 77 * immediately.
Christopher Haster 103:37decbcb1108 78 *
Christopher Haster 103:37decbcb1108 79 * @param address The SocketAddress of the remote host
Christopher Haster 103:37decbcb1108 80 * @param data Buffer of data to send to the host
Christopher Haster 103:37decbcb1108 81 * @param size Size of the buffer in bytes
Christopher Haster 103:37decbcb1108 82 * @return Number of sent bytes on success, negative error
Christopher Haster 103:37decbcb1108 83 * code on failure
Christopher Haster 89:b1d417383c0d 84 */
Christopher Haster 80:9c6673c93082 85 int sendto(const SocketAddress &address, const void *data, unsigned size);
Christopher Haster 75:dea0cdb42241 86
Christopher Haster 103:37decbcb1108 87 /** Receive a packet over a UDP socket
Christopher Haster 103:37decbcb1108 88 *
Christopher Haster 103:37decbcb1108 89 * Receives data and stores the source address in address if address
Christopher Haster 103:37decbcb1108 90 * is not NULL. Returns the number of bytes received into the buffer.
Christopher Haster 103:37decbcb1108 91 *
Christopher Haster 103:37decbcb1108 92 * By default, recvfrom blocks until data is sent. If socket is set to
Christopher Haster 103:37decbcb1108 93 * non-blocking or times out, NSAPI_ERROR_WOULD_BLOCK is returned
Christopher Haster 103:37decbcb1108 94 * immediately.
Christopher Haster 103:37decbcb1108 95 *
Christopher Haster 103:37decbcb1108 96 * @param address Destination for the source address or NULL
Christopher Haster 103:37decbcb1108 97 * @param data Destination buffer for data received from the host
Christopher Haster 103:37decbcb1108 98 * @param size Size of the buffer in bytes
Christopher Haster 103:37decbcb1108 99 * @return Number of received bytes on success, negative error
Christopher Haster 103:37decbcb1108 100 * code on failure
Christopher Haster 89:b1d417383c0d 101 */
Christopher Haster 103:37decbcb1108 102 int recvfrom(SocketAddress *address, void *data, unsigned size);
Christopher Haster 21:35ed15069189 103 };
Christopher Haster 21:35ed15069189 104
Christopher Haster 21:35ed15069189 105 #endif