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 /* TCPSocket
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 TCPSOCKET_H
Christopher Haster 72:6a8b52ee83ed 18 #define TCPSOCKET_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 89:b1d417383c0d 23 /** TCP socket connection
Christopher Haster 21:35ed15069189 24 */
Christopher Haster 72:6a8b52ee83ed 25 class TCPSocket : 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 TCPSocket();
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 TCPSocket(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 90:0a988e4abb72 48 */
Christopher Haster 105:2fd212f8da61 49 virtual int open(NetworkStack *iface);
Christopher Haster 103:37decbcb1108 50
Christopher Haster 103:37decbcb1108 51 /** Connects TCP socket to a remote host
Christopher Haster 103:37decbcb1108 52 *
Christopher Haster 103:37decbcb1108 53 * Initiates a connection to a remote server specified by either
Christopher Haster 103:37decbcb1108 54 * a domain name or an IP address and a port.
Christopher Haster 103:37decbcb1108 55 *
Christopher Haster 104:d28d8b508e7c 56 * @param host Hostname of the remote host
Christopher Haster 103:37decbcb1108 57 * @param port Port of the remote host
Christopher Haster 103:37decbcb1108 58 * @return 0 on success, negative error code on failure
Christopher Haster 21:35ed15069189 59 */
Christopher Haster 79:43a7e8c0d6cc 60 int connect(const char *host, uint16_t port);
Christopher Haster 75:dea0cdb42241 61
Christopher Haster 103:37decbcb1108 62 /** Connects TCP socket to a remote host
Christopher Haster 103:37decbcb1108 63 *
Christopher Haster 103:37decbcb1108 64 * Initiates a connection to a remote server specified by the
Christopher Haster 103:37decbcb1108 65 * indicated address.
Christopher Haster 103:37decbcb1108 66 *
Christopher Haster 103:37decbcb1108 67 * @param address The SocketAddress of the remote host
Christopher Haster 103:37decbcb1108 68 * @return 0 on success, negative error code on failure
Christopher Haster 89:b1d417383c0d 69 */
Christopher Haster 80:9c6673c93082 70 int connect(const SocketAddress &address);
Christopher Haster 72:6a8b52ee83ed 71
Christopher Haster 103:37decbcb1108 72 /** Send data over a TCP socket
Christopher Haster 103:37decbcb1108 73 *
Christopher Haster 103:37decbcb1108 74 * The socket must be connected to a remote host. Returns the number of
Christopher Haster 103:37decbcb1108 75 * bytes sent from the buffer.
Christopher Haster 103:37decbcb1108 76 *
Christopher Haster 103:37decbcb1108 77 * By default, send blocks until data is sent. If socket is set to
Christopher Haster 103:37decbcb1108 78 * non-blocking or times out, NSAPI_ERROR_WOULD_BLOCK is returned
Christopher Haster 103:37decbcb1108 79 * immediately.
Christopher Haster 103:37decbcb1108 80 *
Christopher Haster 103:37decbcb1108 81 * @param data Buffer of data to send to the host
Christopher Haster 103:37decbcb1108 82 * @param size Size of the buffer in bytes
Christopher Haster 103:37decbcb1108 83 * @return Number of sent bytes on success, negative error
Christopher Haster 103:37decbcb1108 84 * code on failure
Christopher Haster 89:b1d417383c0d 85 */
Christopher Haster 72:6a8b52ee83ed 86 int send(const void *data, unsigned size);
Christopher Haster 72:6a8b52ee83ed 87
Christopher Haster 103:37decbcb1108 88 /** Receive data over a TCP socket
Christopher Haster 103:37decbcb1108 89 *
Christopher Haster 103:37decbcb1108 90 * The socket must be connected to a remote host. Returns the number of
Christopher Haster 103:37decbcb1108 91 * bytes received into the buffer.
Christopher Haster 103:37decbcb1108 92 *
Christopher Haster 103:37decbcb1108 93 * By default, recv blocks until data is sent. If socket is set to
Christopher Haster 103:37decbcb1108 94 * non-blocking or times out, NSAPI_ERROR_WOULD_BLOCK is returned
Christopher Haster 103:37decbcb1108 95 * immediately.
Christopher Haster 103:37decbcb1108 96 *
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 73:968f7b32278f 102 int recv(void *data, unsigned size);
Christopher Haster 73:968f7b32278f 103
Christopher Haster 79:43a7e8c0d6cc 104 private:
Christopher Haster 79:43a7e8c0d6cc 105 friend class TCPServer;
Christopher Haster 21:35ed15069189 106 };
Christopher Haster 21:35ed15069189 107
Christopher Haster 21:35ed15069189 108 #endif