| #ifndef _PRAGMA_COPYRIGHT_ |
| #define _PRAGMA_COPYRIGHT_ |
| #pragma comment(copyright, "%Z% %I% %W% %D% %T%\0") |
| #endif /* _PRAGMA_COPYRIGHT_ */ |
| /**************************************************************************** |
| |
| * Copyright (c) 2008, 2010 IBM Corporation. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0s |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| |
| Classes: Socket, SocketException |
| |
| Description: Socket manipulation. |
| |
| Author: Tu HongJ, Liu Wei |
| |
| History: |
| Date Who ID Description |
| -------- --- --- ----------- |
| 10/06/08 tuhongj Initial code (D153875) |
| |
| ****************************************************************************/ |
| |
| #ifndef _SOCKET_HPP |
| #define _SOCKET_HPP |
| |
| #include <netdb.h> |
| #include <netinet/in.h> |
| #include <string> |
| |
| using namespace std; |
| |
| class Socket |
| { |
| public: |
| enum DIRECTION |
| { |
| READ, |
| WRITE, |
| BOTH |
| }; |
| |
| private: |
| int socket; |
| |
| public: |
| Socket(int sockfd = -1); |
| ~Socket(); |
| |
| int setMode(bool mode); // blocking or non-blocking |
| int setFd(int fd); |
| |
| int listen(int &port); |
| int listen(int &port, const string &ifname); |
| int connect(const char *hostName, in_port_t port); |
| int accept(int sock); |
| int send(const char *buf, int len); |
| int recv(char *buf, int len); |
| void close(DIRECTION how); |
| }; |
| |
| class SocketException |
| { |
| public: |
| enum CODE |
| { |
| NET_ERR_SOCKET = -101, |
| NET_ERR_CONNECT = -102, |
| NET_ERR_GETADDRINFO = -103, |
| NET_ERR_SEND = -104, |
| NET_ERR_RECV = -105, |
| NET_ERR_CLOSED = -106, |
| NET_ERR_INTR = -107, |
| NET_ERR_FCNTL = -108, |
| NET_ERR_ACCEPT = -109, |
| NET_ERR_DATA = -110, |
| NET_ERR_BIND = -111 |
| }; |
| |
| private: |
| int errCode; |
| int errNum; |
| string errMsg; |
| |
| public: |
| SocketException(int code) throw(); |
| SocketException(int code, int num) throw(); |
| |
| int getErrCode() const throw(); |
| int getErrNum() const throw(); |
| string & getErrMsg() throw(); |
| }; |
| |
| #endif |
| |