| | |
| | | ``` |
| | | |
| | | ### 2.2 å¯å¨BusService |
| | | BusServiceï¼ Pub/Sub Client å Request/Reply Clientç头æä»¶é½æ¯ net_mod_socket_wrapper.hï¼ ä¸é¢å¯å¨keyæ¯8çBusæå¡. |
| | | BusServiceç头æä»¶æ¯bus_server_socket_wrapper.hï¼ ä¸é¢æ¯å¯å¨Busæå¡ç代ç . |
| | | |
| | | ``` |
| | | |
| | | void * server_socket = net_mod_socket_open(); |
| | | |
| | | net_mod_socket_bind(server_socket, 8); |
| | | |
| | | net_mod_socket_start_bus(server_socket); |
| | | void * server_socket = bus_server_socket_wrapper_open(); |
| | | if(bus_server_socket_wrapper_start_bus(server_socket) != 0) { |
| | | printf("start bus failed\n"); |
| | | exit(1); |
| | | } |
| | | |
| | | ``` |
| | | |
| | | ### 2.3 Request/Reply ç¨ä¾è¯´æ |
| | | |
| | | Pub/Sub Client å Request/Reply Clientç头æä»¶é½æ¯ net_mod_socket_wrapper.h |
| | | |
| | | ç°å¨æ¨¡æä¸ä¸ªåºæ¯ï¼AåBåCåéä¸ä¸ªè¯·æ±ï¼BåCæ¶å°è¯·æ±ååå«è¿åä¸ä¸ªååºç»A ãå设AçIPæ¯192.168.20.101ï¼BçIPæ¯192.168.20.102, CçIPæ¯192.168.20.103, å®ä»¬çkey齿¯100ï¼ ä»£çserverçç«¯å£æ¯5000ã |
| | | |
| | | A ç代ç å¦ä¸ï¼ |
| | |
| | | int node_arr_size = 2; |
| | | |
| | | void *client = net_mod_socket_open(); |
| | | n = net_mod_socket_sendandrecv(client, node_arr, node_arr_size, content, strlen(content), &recv_arr, &recv_arr_size); |
| | | n = net_mod_socket_sendandrecv(client, node_arr, node_arr_size, |
| | | content, strlen(content), &recv_arr, &recv_arr_size); |
| | | |
| | | printf(">>> %d nodes reply\n", n); |
| | | for(i=0; i<recv_arr_size; i++) { |
| | | printf("host:%s, port: %d, key:%d, content: %s\n", |
| | |
| | | |
| | | ### 2.3 Pub/Sub ç¨ä¾è¯´æ |
| | | |
| | | ç°å¨æ¨¡æä¸ä¸ªåºæ¯ï¼B å C订é
äºä¸»é¢news, A åå¸äºè¯¥ä¸»é¢ç¸å
³çå
容 ãå设AçIPæ¯192.168.20.101ï¼BçIPæ¯192.168.20.102, CçIPæ¯192.168.20.103, å®ä»¬çkey齿¯200ï¼ Busçkeyæ¯8ï¼ ä»£çserverçç«¯å£æ¯5000. |
| | | ç°å¨æ¨¡æä¸ä¸ªåºæ¯ï¼B å C订é
äºä¸»é¢news, A åå¸äºè¯¥ä¸»é¢ç¸å
³çå
容 ãå设AçIPæ¯192.168.20.101ï¼BçIPæ¯192.168.20.102, CçIPæ¯192.168.20.103, å®ä»¬çkey齿¯200ï¼ ä»£çserverçç«¯å£æ¯5000. |
| | | |
| | | Aç代ç å¦ä¸ï¼ |
| | | |
| | | ``` |
| | | int n; |
| | | const char* topic = "news": |
| | | const char* content = "HELLO WORLD!": |
| | | void *client = net_mod_socket_open(); |
| | | net_mod_socket_bind(client, 200); |
| | | net_node_t node_arr = { |
| | | {"192.168.20.102", 5000, 8}, |
| | | {"192.168.20.103", 5000, 8} |
| | | }; |
| | | int node_arr_size = 2; |
| | | int main() { |
| | | int n; |
| | | const char* topic = "news": |
| | | const char* content = "HELLO WORLD!": |
| | | void *client = net_mod_socket_open(); |
| | | net_mod_socket_bind(client, 200); |
| | | net_node_t node_arr = { |
| | | {"192.168.20.102", 5000}, |
| | | {"192.168.20.103", 5000} |
| | | }; |
| | | int node_arr_size = 2; |
| | | |
| | | void *client = net_mod_socket_open(); |
| | | net_mod_socket_bind(client, 200); |
| | | n = net_mod_socket_pub(client, pub_node_arr, pub_node_arr_size, topic, strlen(topic)+1, content, strlen(content)+1); |
| | | printf("pub %d nodes\n", n); |
| | | void *client = net_mod_socket_open(); |
| | | net_mod_socket_bind(client, 200); |
| | | n = net_mod_socket_pub(client, pub_node_arr, |
| | | pub_node_arr_size, topic, strlen(topic)+1, content, strlen(content)+1); |
| | | |
| | | printf("pub %d nodes\n", n); |
| | | } |
| | | |
| | | ``` |
| | | |
| | | B å C ç代ç å¦ä¸ |
| | | ``` |
| | | const char* topic = "news": |
| | | |
| | | void *client = net_mod_socket_open(); |
| | | net_mod_socket_bind(client, 200); |
| | | while (net_mod_socket_sub(client, topic, strlen(topic), 8) == 0) { |
| | | printf("%d Sub success!\n", net_mod_socket_get_key(client)); |
| | | // æå°æ¥åå°ç订é
æ¶æ¯ |
| | | void *print_sub_msg(void *sockt) { |
| | | pthread_detach(pthread_self()); |
| | | void *recvbuf; |
| | | int size; |
| | | int key; |
| | | while (net_mod_socket_recvfrom( sockt, &recvbuf, &size, &key) == 0) { |
| | | printf("æ¶å°è®¢é
æ¶æ¯:%s\n", recvbuf); |
| | | free(recvbuf); |
| | | } |
| | | |
| | | } |
| | | |
| | | int main() { |
| | | pthread_t tid; |
| | | // å建ä¸ä¸ªçº¿ç¨æ¥å订é
æ¶æ¯ |
| | | pthread_create(&tid, NULL, print_sub_msg, client); |
| | | const char* topic = "news": |
| | | |
| | | void *client = net_mod_socket_open(); |
| | | net_mod_socket_bind(client, 200); |
| | | // 订é
æå
´è¶£çä¸»é¢ |
| | | if (net_mod_socket_sub(client, topic, strlen(topic)) == 0) { |
| | | printf("%d Sub success!\n", net_mod_socket_get_key(client)); |
| | | } |
| | | } |
| | | |
| | | ``` |
| | | |
| | | æ´å
·ä½çå®ä¾ä»£ç 请åç`test_net_mod_socket.c` |