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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
//
// // Minimal C ZMQ Client example
//
// // Properties -> Linker -> Input -> Additional dependencies "libzmq.lib"
// // Properties -> Linker -> Input -> Additional dependencies "ws2_32.lib"
//
// #include <stdio.h>
// #include "zmq.h"
//
//
// #define WS_VER 0x0202
// #define DEFAULT_PORT "5001"
//
//
// int main ()
// {
// int retval;
// void *ctx, *s;
// zmq_msg_t query, reply;
// const char *query_string = "SELECT * FROM sometable, END SERVER", *reply_string;
//
//
// printf( "Initialise ZMQ context: \n" );
//
// // Initialise ZMQ context, requesting a single application thread and a single I/O thread
// ctx = zmq_init(1);
// if( ctx == 0 ) {
// printf( "Error zmq_init: '%s'\n", zmq_strerror(errno) );
// return 0;
// }
//
// while(1) {
// printf( "Create a ZMQ_REP socket: \n" );
// // Create a ZMQ_REP socket to receive requests and send replies
// s = zmq_socket( ctx, ZMQ_REQ );
// if( s == 0 ) {
// printf( "Error zmq_socket: '%s'\n", zmq_strerror(errno) );
// break;
// }
//
// retval = zmq_connect( s, "tcp://localhost:5555" );
// if( retval != 0 ) {
// printf( "Error zmq_connect: '%s'\n", zmq_strerror(errno) );
// break;
// }
//
//
// // Allocate a message and fill it
// retval = zmq_msg_init_size( &query, strlen(query_string)+1 );
// if( retval != 0 ) {
// printf( "Error zmq_msg_init_size: '%s'\n", zmq_strerror(errno) );
// break;
// }
//
// memcpy( zmq_msg_data (&query), query_string, strlen (query_string)+1 );
//
// printf( "Send Query: '%s'\n", query_string );
// // Send Query
// retval = zmq_send( s, &query, 0 , 0);
// if( retval != 0 ) {
// printf( "Error zmq_send: '%s'\n", zmq_strerror(errno) );
// break;
// }
//
//
//
// // Recover response
// zmq_msg_init(&reply);
// if( retval != 0 ) {
// printf( "Error zmq_msg_init: '%s'\n", zmq_strerror(errno) );
// break;
// }
//
// printf( "Waiting for reply: \n");
//
// // Receive reply, blocks until one is available
// retval = zmq_recv( s, &reply, 0 , 0);
// if( retval != 0 ) {
// printf( "Error zmq_recv: '%s'\n", zmq_strerror(errno) );
// break;
// }
//
// // Process the reply
// reply_string = (const char *)zmq_msg_data(&reply);
// printf("Server reply: '%s'\n", reply_string);
//
//
// // Free message memory
// zmq_msg_close(&reply);
//
// break;
// }
//
//
// // Close connection
// if( s != 0) {
// printf( "Close connection \n");
// retval = zmq_close(s);
// if( retval != 0 ) {
// printf( "Error zmq_close: '%s'\n", zmq_strerror(errno) );
// }
// }
//
// // Release library resources
// retval = zmq_term(ctx);
//
// printf( "All Done \n" );
//
// return 0;
// }
|