GuoWenxue
2022-04-29 8bdd4bb9f08e38b61b47caa5aa50d6912772b289
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
/********************************************************************************
 *      Copyright:  (C) 2014 Guo Wenxue<guowenxue@gmail.com>
 *                  All rights reserved.
 *
 *       Filename:  cp_socket.h
 *    Description:  This head file 
 *
 *        Version:  1.0.0(11/19/2014)
 *         Author:  Guo Wenxue <guowenxue@gmail.com>
 *      ChangeLog:  1, Release initial version on "11/19/2014 12:16:45 AM"
 *                 
 ********************************************************************************/
#ifndef __CP_SOCKET_H_
#define __CP_SOCKET_H_
 
#include <sys/types.h> 
#include <sys/socket.h>
 
#define DOMAIN_MAX_LEN             128
 
#define SOCK_STAT_INIT             0
#define SOCK_STAT_CONNECTING       1
#define SOCK_STAT_CONNECTED        2
#define SOCK_STAT_DISCONNECT       3
 
typedef struct cp_socket_s 
{
    char               servaddr[DOMAIN_MAX_LEN];      /*  connect server hostname or IP address */
    unsigned short     servport;                      /*  connect server port  */
    int                fd;                            /*  socket fd  */ 
    struct sockaddr    saddr;                         /*  sockaddr for none-block connect */ 
    unsigned char      status;                        /*  socket connect status: 0:disconnect 1:connecting 2:connected  */
} cp_socket_t;
 
 
/* Description: create socket object and connect to server in block mode
 * $sock:       socket object, if it's NULL will be malloced.
 * $servaddr:   connect server hostname or IP address
 * $servport:   connect to server port
 *
 * Return:      socket object address
 */
extern int cp_sock_block_connect(cp_socket_t *sock, char * servaddr, unsigned short servport);
 
 
/* Description: set socket to none block mode  */
extern int cp_sock_set_nonblock(int sockfd);
 
/* Description: create socket object and connect to server in none block mode
 * $sock:       socket object, if it's NULL will be malloced.
 * $servaddr:   connect server hostname or IP address
 * $servport:   connect to server port
 *
 * Return:      0: connecting or connected  <0: connect failure 
 */
 
extern int cp_sock_nonblock_connect(cp_socket_t *sock, char * servaddr, unsigned short servport);
 
 
/* Description: close socket  */
extern void cp_sock_close(cp_socket_t *sock);
 
 
#endif