source: libcf/trunk/include/cf_socket.h@ 26

Last change on this file since 26 was 26, checked in by cheese, 11 years ago

#1 documentation with doxygen

File size: 4.5 KB
Line 
1/**
2 * @file cf_socket.h
3 * @author myusgun <myusgun@gmail.com>
4 * @version 0.1
5
6 * @remark TCP 소켓만 지원됨
7 */
8#ifndef __CF_SOCKET_H__
9#define __CF_SOCKET_H__
10
11#include "cf_base.h"
12#include <stddef.h>
13
14#ifdef _WIN32
15# include <WinSock2.h>
16#else
17# include <netinet/in.h>
18# include <sys/socket.h>
19# include <arpa/inet.h>
20# include <netdb.h>
21# include <unistd.h>
22#endif
23
24#define CF_ERROR_SOCKET_INITIALIZE CF_ERROR_SOCKET - 1
25#define CF_ERROR_SOCKET_NOT_INITIALIZED CF_ERROR_SOCKET - 2
26#define CF_ERROR_SOCKET_FINALIZE CF_ERROR_SOCKET - 3
27#define CF_ERROR_SOCKET_CLOSE CF_ERROR_SOCKET - 4
28#define CF_ERROR_SOCKET_CREATE CF_ERROR_SOCKET - 5
29#define CF_ERROR_SOCKET_CONNECT CF_ERROR_SOCKET - 6
30#define CF_ERROR_SOCKET_SET_OPTION CF_ERROR_SOCKET - 7
31#define CF_ERROR_SOCKET_GET_OPTION CF_ERROR_SOCKET - 8
32#define CF_ERROR_SOCKET_SET_TIMEOUT CF_ERROR_SOCKET - 9
33#define CF_ERROR_SOCKET_INVALID_ARGS CF_ERROR_SOCKET - 10
34#define CF_ERROR_SOCKET_INVALID_SOCKET CF_ERROR_SOCKET - 11
35#define CF_ERROR_SOCKET_GET_HOST CF_ERROR_SOCKET - 12
36#define CF_ERROR_SOCKET_BIND CF_ERROR_SOCKET - 13
37#define CF_ERROR_SOCKET_LISTEN CF_ERROR_SOCKET - 14
38#define CF_ERROR_SOCKET_ACCEPT CF_ERROR_SOCKET - 15
39#define CF_ERROR_SOCKET_SEND CF_ERROR_SOCKET - 16
40#define CF_ERROR_SOCKET_RECV CF_ERROR_SOCKET - 17
41
42#ifdef _WIN32
43typedef int socklen_t;
44#endif // #ifdef _WIN32
45
46#ifdef __cplusplus
47extern "C" {
48#endif
49
50/**
51 * 소켓이 초기화 상태 확인
52 *
53 * @return 초기화 된 경우, CF_TRUE; 그렇지 않은 경우, CF_FALSE
54 */
55CF_EXPORT CF_BOOL
56CF_Socket_IsInitialized (void);
57
58/**
59 * 소켓 초기화
60 *
61 * @return 성공 시, CF_OK; 실패 시, 오류 코드
62 */
63CF_EXPORT int
64CF_Socket_Initialize (void);
65
66/**
67 * 소켓 해제
68 *
69 * @return 성공 시, CF_OK; 실패 시, 오류 코드
70 */
71CF_EXPORT int
72CF_Socket_Finalize (void);
73
74/**
75 * 소켓 닫기
76 *
77 * @return 성공 시, CF_OK; 실패 시, 오류 코드
78 *
79 * @param sock 소켓
80 */
81CF_EXPORT int
82CF_Socket_Close (const int sock);
83
84/**
85 * 소켓 옵션 설정
86 *
87 * @return 성공 시 CF_OK; 실패 시, 오류 코드
88 *
89 * @param sock 소켓
90 * @param optname 옵션 이름
91 * @param optval 설정할 옵션 값의 메모리
92 * @param optlen 설정할 옵션의 길이
93 */
94CF_EXPORT int
95CF_Socket_SetOption (const int sock,
96 const int optname,
97 const void * optval,
98 const size_t optlen);
99
100/**
101 * 소켓 옵션 얻기
102 *
103 * @return 성공 시 CF_OK; 실패 시, 오류 코드
104 *
105 * @param sock 소켓
106 * @param optname 옵션 이름
107 * @param optval 옵션 값을 가져올 메모리
108 * @param optlen 옵션 길이를 가져올 메모리
109 */
110CF_EXPORT int
111CF_Socket_GetOption (const int sock,
112 const int optname,
113 void * optval,
114 size_t * optlen);
115
116/**
117 * 소켓에 타임아웃 설정
118 *
119 * @return 성공 시 CF_OK; 실패 시, 오류 코드
120 *
121 * @param sock 소켓
122 * @param timeout 타임아웃(sec)
123 */
124CF_EXPORT int
125CF_Socket_SetTimeout (const int sock,
126 const int timeout);
127
128/**
129 * 소켓 연결
130 *
131 * @return 성공 시, 연결된 소켓; 실패 시, 오류 코드
132 *
133 * @param ip 연결할 호스트의 주소 (도메인 이름 가능)
134 * @param port 연결할 호스트의 포트번호
135 */
136CF_EXPORT int
137CF_Socket_Connect (const char * ip,
138 const unsigned short port);
139
140/**
141 * 서버 열기
142 *
143 * @return 성공 시, 서버 소켓; 실패 시, 오류 코드
144 *
145 * @param port 서버 포트
146 * @param backlog listen 시의 backlog 수
147 */
148CF_EXPORT int
149CF_Socket_Server (const unsigned short port,
150 const int backlog);
151
152/**
153 * 소켓 연결
154 *
155 * @return 성공 시, 연결된 소켓; 실패 시, 오류 코드
156 *
157 * @param sock 서버 소켓
158 * @param address [옵션] 클라이언트 정보를 담을 sockaddr_in 구조체 포인터
159 */
160CF_EXPORT int
161CF_Socket_Accept (const int sock,
162 struct sockaddr_in * address);
163
164/**
165 * 데이터 송신
166 *
167 * @return 성공 시, CF_OK; 실패 시, 오류 코드
168 *
169 * @param sock 소켓
170 * @param buf 송신할 데이터
171 * @param len 송신할 데이터의 길이
172 */
173CF_EXPORT int
174CF_Socket_Send (const int sock,
175 const void * buf,
176 const int len);
177
178/**
179 * 데이터 수신
180 *
181 * @return 성공 시, 수신한 데이터의 길이; 실패 시, 오류 코드
182 *
183 * @param sock 소켓
184 * @param buf 데이터를 수신할 버퍼
185 * @param len 데이터를 수신할 버퍼의 최대 크기
186 */
187CF_EXPORT int
188CF_Socket_Recv (const int sock,
189 void * buf,
190 const int len);
191
192#ifdef __cplusplus
193}
194#endif
195
196#endif // #ifndef __CF_SOCKET_H__
Note: See TracBrowser for help on using the repository browser.