Changeset 151 in libcf for trunk/test/socket.c
- Timestamp:
- 10/31/13 10:17:24 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/test/socket.c
r122 r151 8 8 #include <string.h> 9 9 10 #define LOG_SOCKET 0 11 #define THREAD_POOL 1 10 #define THREAD_POOL 2 12 11 #define PORT 1234 13 14 int socket_echo_server (void * arg) 12 #define COUNT 2 13 14 cf_ctx gLog; 15 16 int server_worker (void * arg) 15 17 { 16 int srvsock = *((int *)arg); 17 int clntsock = 0; 18 cf_ctx srvsock = (cf_ctx)arg; 19 cf_ctx clntsock = NULL; 20 int result = 0; 18 21 int recvd = 0; 19 22 char buf[1024] = {0x00,}; … … 21 24 22 25 /*------------------------------------------------------------*/ 23 clntsock = CF_Socket_Accept (srvsock);24 if ( clntsock< 0)26 result = CF_Socket_Accept (srvsock, &clntsock); 27 if (result < 0) 25 28 { 26 29 CF_DEBUG_PRINT (stderr, "failed to accept on server\n"); 27 30 return -1; 28 31 } 29 CF_Log_Write ( LOG_SOCKET, "SERVER", "accepted\n");30 31 for (i = 0 ; i < 5; i++)32 CF_Log_Write (gLog, "SERVER", "accepted\n"); 33 34 for (i = 0 ; i < COUNT ; i++) 32 35 { 33 36 if ((recvd = CF_Socket_Recv (clntsock, buf, sizeof (buf))) < 0) … … 36 39 return -2; 37 40 } 38 CF_Log_Write ( LOG_SOCKET, "SERVER", "recv {%s}\n", buf);39 CF_DEBUG_PRINT (stderr, " [SERVER]recv {%s}\n", buf);41 CF_Log_Write (gLog, "SERVER", "recv {%s}\n", buf); 42 CF_DEBUG_PRINT (stderr, "recv {%s}\n", buf); 40 43 41 44 if (CF_Socket_Send (clntsock, buf, (size_t)recvd) < 0) … … 43 46 return -3; 44 47 } 45 CF_Log_Write ( LOG_SOCKET, "SERVER", "resp {%s}\n", buf);46 CF_DEBUG_PRINT (stderr, " [SERVER]resp {%s}\n", buf);48 CF_Log_Write (gLog, "SERVER", "resp {%s}\n", buf); 49 CF_DEBUG_PRINT (stderr, "resp {%s}\n", buf); 47 50 } 48 51 … … 53 56 } 54 57 55 int socket_echo_client(void * arg)58 int client_worker (void * arg) 56 59 { 57 int sock = 0; 60 cf_ctx sock = NULL; 61 int result = 0; 58 62 int recvd = 0; 59 63 char buf[1024] = {0x00,}; … … 63 67 64 68 /*------------------------------------------------------------*/ 65 sock = CF_Socket_Connect ("localhost", PORT); 66 if (sock < 0) 69 result = CF_Socket_Create (&sock); 70 if (result < 0) 71 { 72 CF_DEBUG_PRINT (stderr, "failed to create\n"); 73 return -1; 74 } 75 76 result = CF_Socket_Connect (sock, "localhost", PORT); 77 if (result < 0) 67 78 { 68 79 CF_DEBUG_PRINT (stderr, "failed to connect on client\n"); 69 return - 1;70 } 71 CF_Log_Write ( LOG_SOCKET, "CLIENT", "connected\n");72 73 for (i = 0 ; i < 5; i++)80 return -2; 81 } 82 CF_Log_Write (gLog, "CLIENT", "connected\n"); 83 84 for (i = 0 ; i < COUNT ; i++) 74 85 { 75 86 if (CF_Socket_Send (sock, buf, sizeof (buf)) < 0) 76 87 { 77 88 CF_DEBUG_PRINT (stderr, "failed to send on client %d\n", errno); 78 return - 2;79 } 80 CF_Log_Write ( LOG_SOCKET, "CLIENT", "sent {%s}\n", buf);81 CF_DEBUG_PRINT (stderr, " [CLIENT]sent {%s}\n", buf);89 return -3; 90 } 91 CF_Log_Write (gLog, "CLIENT", "sent {%s}\n", buf); 92 CF_DEBUG_PRINT (stderr, "sent {%s}\n", buf); 82 93 83 94 memset (buf, 0x00, sizeof (buf)); … … 86 97 { 87 98 CF_DEBUG_PRINT (stderr, "failed to recv on client\n"); 88 return - 3;89 } 90 CF_Log_Write ( LOG_SOCKET, "CLIENT", "recv {%s}\n", buf);91 CF_DEBUG_PRINT (stderr, " [CLIENT]recv {%s}\n", buf);99 return -4; 100 } 101 CF_Log_Write (gLog, "CLIENT", "recv {%s}\n", buf); 102 CF_DEBUG_PRINT (stderr, "recv {%s}\n", buf); 92 103 } 93 104 … … 100 111 int main () 101 112 { 102 CF_Thread_Ctx stid[THREAD_POOL]; 103 CF_Thread_Ctx ctid[THREAD_POOL]; 104 105 int sock = 0; 113 cf_ctx stid[THREAD_POOL]; 114 cf_ctx ctid[THREAD_POOL]; 115 116 char ip[256] = {0x00,}; 117 unsigned short port = 0; 118 cf_ctx sock = 0; 119 int result = 0; 106 120 int iter = 0; 107 121 108 122 /*------------------------------------------------------------*/ 109 if (CF_Log_Initialize (1) < 0) 110 { 111 fprintf (stderr, "failed to init. log\n"); 123 if (CF_Log_Create (&gLog, "socket.txt", CF_LOG_DEFAULT_BUFFER) < 0) 124 CF_DEBUG_PRINT (stderr, "failed to open log\n"); 125 126 CF_Log_Write (gLog, "LOG_MULTITHREAD", "multi-threaded logging test with socket\n"); 127 128 if (CF_Socket_Initialize () < 0) 129 { 130 CF_DEBUG_PRINT (stderr, "failed to initialize socket\n"); 112 131 return -1; 113 132 } 114 115 if (CF_Log_Open (LOG_SOCKET, "socket.txt", CF_LOG_DEFAULT_BUFFER) < 0) 116 CF_DEBUG_PRINT (stderr, "failed to open log\n"); 117 118 CF_Log_Write (LOG_SOCKET, "LOG_MULTITHREAD", "multi-threaded logging test with socket\n"); 119 120 if (CF_Socket_Initialize () < 0) 121 { 122 CF_DEBUG_PRINT (stderr, "failed to initialize socket\n"); 133 CF_Log_Write (gLog, "SOCKET", "socket initialized\n"); 134 135 result = CF_Socket_Create (&sock); 136 if (result < 0) 137 { 138 CF_DEBUG_PRINT (stderr, "failed to create\n"); 123 139 return -2; 124 140 } 125 CF_Log_Write (LOG_SOCKET, "SOCKET", "socket initialized\n"); 126 127 sock = CF_Socket_Server (PORT, 5); 141 142 result = CF_Socket_Server (sock, PORT, 5); 128 143 if (sock < 0) 129 144 { … … 131 146 return -3; 132 147 } 133 CF_Log_Write (LOG_SOCKET, "SOCKET", "socket ready\n"); 134 135 for (iter = 0 ; iter < THREAD_POOL ; iter++) 136 { 137 if (CF_Thread_CreateCtx (&stid[iter], socket_echo_server, &sock) < 0) 148 CF_Socket_GetIP (sock, ip); 149 CF_Socket_GetPort (sock, &port); 150 CF_Log_Write (gLog, "SOCKET", "socket ready [%s:%d]\n", ip, port); 151 CF_DEBUG_PRINT (stderr, "socket ready [%s:%d]\n", ip, port); 152 153 154 for (iter = 0 ; iter < THREAD_POOL ; iter++) 155 { 156 if (CF_Thread_Create (&stid[iter], server_worker, sock) < 0) 138 157 { 139 158 CF_DEBUG_PRINT (stderr, "failed to create %dth thread\n", iter); 140 159 return -4; 141 160 } 142 CF_Log_Write ( LOG_SOCKET, "SOCKET", "create server thread-%d\n", iter);143 } 144 145 for (iter = 0 ; iter < THREAD_POOL ; iter++) 146 { 147 if (CF_Thread_Create Ctx (&ctid[iter], socket_echo_client, &sock) < 0)161 CF_Log_Write (gLog, "SOCKET", "create server thread-%d\n", iter); 162 } 163 164 for (iter = 0 ; iter < THREAD_POOL ; iter++) 165 { 166 if (CF_Thread_Create (&ctid[iter], client_worker, &sock) < 0) 148 167 { 149 168 CF_DEBUG_PRINT (stderr, "failed to create %dth thread\n", iter); 150 169 return -5; 151 170 } 152 CF_Log_Write ( LOG_SOCKET, "SOCKET", "create client thread-%d\n", iter);171 CF_Log_Write (gLog, "SOCKET", "create client thread-%d\n", iter); 153 172 } 154 173 … … 174 193 { 175 194 CF_Thread_Join (ctid[iter]); 176 CF_Thread_Destroy Ctx(ctid[iter]);195 CF_Thread_Destroy (ctid[iter]); 177 196 178 197 CF_Thread_Join (stid[iter]); 179 CF_Thread_Destroy Ctx(stid[iter]);180 181 CF_Log_Write ( LOG_SOCKET, "SOCKET", "join server thread-%d\n", iter);198 CF_Thread_Destroy (stid[iter]); 199 200 CF_Log_Write (gLog, "SOCKET", "join server thread-%d\n", iter); 182 201 } 183 202 … … 186 205 CF_Socket_Finalize (); 187 206 188 CF_Log_Close (LOG_SOCKET); 189 190 CF_Log_Finalize (); 207 CF_Log_Destroy (gLog); 191 208 /*------------------------------------------------------------*/ 192 209
Note:
See TracChangeset
for help on using the changeset viewer.