454

Fork of C027_Support by Umar Naeem

Committer:
mazgch
Date:
Fri May 09 17:43:55 2014 +0000
Revision:
47:9a89e5195721
Parent:
44:9d12223b78ff
Child:
54:7ba8e4c218e2
timeout can now be set before connect

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mazgch 44:9d12223b78ff 1 #ifndef TCPSOCKET_H
mazgch 44:9d12223b78ff 2 #define TCPSOCKET_H
mazgch 44:9d12223b78ff 3
mazgch 44:9d12223b78ff 4 #include "Socket.h"
mazgch 44:9d12223b78ff 5
mazgch 44:9d12223b78ff 6 /** TCP socket connection
mazgch 44:9d12223b78ff 7 */
mazgch 44:9d12223b78ff 8 class TCPSocketConnection: public Socket
mazgch 44:9d12223b78ff 9 {
mazgch 44:9d12223b78ff 10 friend class TCPSocketServer;
mazgch 44:9d12223b78ff 11
mazgch 44:9d12223b78ff 12 public:
mazgch 44:9d12223b78ff 13 /** TCP socket connection
mazgch 44:9d12223b78ff 14 */
mazgch 44:9d12223b78ff 15 TCPSocketConnection() {}
mazgch 44:9d12223b78ff 16
mazgch 44:9d12223b78ff 17 /** Connects this TCP socket to the server
mazgch 44:9d12223b78ff 18 \param host The host to connect to. It can either be an IP Address or a hostname that will be resolved with DNS.
mazgch 44:9d12223b78ff 19 \param port The host's port to connect to.
mazgch 44:9d12223b78ff 20 \return 0 on success, -1 on failure.
mazgch 44:9d12223b78ff 21 */
mazgch 44:9d12223b78ff 22 int connect(const char* host, const int port)
mazgch 44:9d12223b78ff 23 {
mazgch 44:9d12223b78ff 24 if (_socket < 0) {
mazgch 44:9d12223b78ff 25 _socket = _mdm->socketSocket(MDMParser::IPPROTO_TCP);
mazgch 44:9d12223b78ff 26 if (_socket < 0) {
mazgch 44:9d12223b78ff 27 return -1;
mazgch 44:9d12223b78ff 28 }
mazgch 44:9d12223b78ff 29 }
mazgch 44:9d12223b78ff 30
mazgch 47:9a89e5195721 31 _mdm->socketSetBlocking(_socket, _timeout);
mazgch 44:9d12223b78ff 32 if (!_mdm->socketConnect(_socket, host, port)) {
mazgch 44:9d12223b78ff 33 return false;
mazgch 44:9d12223b78ff 34 }
mazgch 47:9a89e5195721 35
mazgch 44:9d12223b78ff 36 return true;
mazgch 44:9d12223b78ff 37 }
mazgch 44:9d12223b78ff 38 /** Check if the socket is connected
mazgch 44:9d12223b78ff 39 \return true if connected, false otherwise.
mazgch 44:9d12223b78ff 40 */
mazgch 44:9d12223b78ff 41 bool is_connected(void) { return _mdm->socketIsConnected(_socket); }
mazgch 44:9d12223b78ff 42
mazgch 44:9d12223b78ff 43 /** Send data to the remote host.
mazgch 44:9d12223b78ff 44 \param data The buffer to send to the host.
mazgch 44:9d12223b78ff 45 \param length The length of the buffer to send.
mazgch 44:9d12223b78ff 46 \return the number of written bytes on success (>=0) or -1 on failure
mazgch 44:9d12223b78ff 47 */
mazgch 44:9d12223b78ff 48 int send(char* data, int length) { return _mdm->socketSend(_socket, data, length); }
mazgch 44:9d12223b78ff 49
mazgch 44:9d12223b78ff 50 /** Send all the data to the remote host.
mazgch 44:9d12223b78ff 51 \param data The buffer to send to the host.
mazgch 44:9d12223b78ff 52 \param length The length of the buffer to send.
mazgch 44:9d12223b78ff 53 \return the number of written bytes on success (>=0) or -1 on failure
mazgch 44:9d12223b78ff 54 */
mazgch 44:9d12223b78ff 55 int send_all(char* data, int length) { return send(data,length); }
mazgch 44:9d12223b78ff 56
mazgch 44:9d12223b78ff 57 /** Receive data from the remote host.
mazgch 44:9d12223b78ff 58 \param data The buffer in which to store the data received from the host.
mazgch 44:9d12223b78ff 59 \param length The maximum length of the buffer.
mazgch 44:9d12223b78ff 60 \return the number of received bytes on success (>=0) or -1 on failure
mazgch 44:9d12223b78ff 61 */
mazgch 44:9d12223b78ff 62 int receive(char* data, int length) { return _mdm->socketRecv(_socket, data, length); }
mazgch 44:9d12223b78ff 63
mazgch 44:9d12223b78ff 64 /** Receive all the data from the remote host.
mazgch 44:9d12223b78ff 65 \param data The buffer in which to store the data received from the host.
mazgch 44:9d12223b78ff 66 \param length The maximum length of the buffer.
mazgch 44:9d12223b78ff 67 \return the number of received bytes on success (>=0) or -1 on failure
mazgch 44:9d12223b78ff 68 */
mazgch 44:9d12223b78ff 69 int receive_all(char* data, int length) { return receive(data,length); }
mazgch 44:9d12223b78ff 70
mazgch 44:9d12223b78ff 71 };
mazgch 44:9d12223b78ff 72
mazgch 44:9d12223b78ff 73 #endif