ap
Dependencies: DnsQuery
Dependents: WizFi310_TCP_Echo_Server_Example
Fork of NetworkSocketAPI by
Diff: TCPSocket.h
- Branch:
- api-changes
- Revision:
- 21:35ed15069189
- Child:
- 24:a5e959bdd2dd
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TCPSocket.h Thu Feb 18 03:11:58 2016 -0600 @@ -0,0 +1,93 @@ +/* TCPSocket + * Copyright (c) 2015 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef TCP_SOCKET_H +#define TCP_SOCKET_H + +#include "NetworkInterface.h" + +/** TCPSocket class + * API for handling TCP sockets. The implementation is determined + * by the interface passed during construction. + */ +class TCPSocket +{ +public: + /** Create a socket using the specified network interface + * @param iface The network interface to use + * @param ip Optional ip address to connect to, copied internally + * @param port Optional port to connect to + */ + TCPSocket(NetworkInterface *iface, const char *ip = 0, uint16_t port = 0); + + /** Closes and destroys the socket + */ + ~TCPSocket(); + + + /** Set the IP address of the socket + * @param ip IP address to connect to, copied internally + */ + void setIPAddress(const char *ip); + + /** Set the port of the socket + * @param port Port to connect to + */ + void setPort(uint16_t port); + + /** Gets the IP address + * @return IP address to connect to + */ + const char *getIPAddress(); + + /** Gets the port + * @return Port to connect to + */ + uint16_t getPort(); + + + /** Open a connection to the underlying address + * @return 0 on success + */ + int32_t open(); + + /** Close an open connection + * @return 0 on success + */ + int32_t close(); + + /** Send data over TCP + * @param data Buffer of data to send + * @param len Size of data to send + * @param timeout_ms Maximum amount of time to wait + * @return 0 on success + */ + int32_t send(const void *data, uint32_t len, uint32_t timeout_ms = 15000); + + /** Recieve data over TCP + * @param data Buffer to store recieved data + * @param len Size of provided buffer + * @param timeout_ms Maximum amount of time to wait + * @return Number of bytes sent or a negative value on failure + */ + int32_t recv(void *data, uint32_t len, uint32_t timeout_ms = 15000); + +private: + NetworkInterface *_iface; + SocketInterface *_socket; +}; + +#endif